Office 365 Pass-through身份验证及Seamless Single Sign-On
Hello 小伙伴们,
这篇文章将视点聚焦在传递身份验证(Pass-through Authentication)上,将分享如何安装,配置和测试Azure Active Directory(Azure AD)Pass-through Identity Authentication和无缝单点登录(Seamless SSO)。
回顾
在开始之前,先为大家回顾一下Office 365身份验证的方式:
Office 365身份验证方式可以概括为四种,分别为:纯云端Azure AD验证、活动目录和密码同步、联合身份验证和传递身份验证,这几种身份验证方式的差别可以总结为以下表格。
|
云身份 |
活动目录和密码同步 |
云身份+目录同步(PTA&S-SSO) |
联合身份 |
|
|
优势 |
不需要本地服务器部署 |
账号来源本地 允许共存 |
单一登录体验(Seamless Single Sign-On) 账号来源本地 无需部署ADFS实现单点登录 |
单一登录体验(Single Sign-On)账号来源本地 验证发生在本地AD 可以创建访问控制策略 |
|
限制 |
没有单点登录 需要管理两套凭证 不同的密码策略 没有访问控制策略 |
没有单点登录 需要部署目录同步服务器 没有访问控制策略 |
没有访问控制策略 对Office Pro Plus Activation激活不支持 需要部署目录同步服务器 |
需要部署ADFS服务器并且要考虑高可用方案 需要部署目录同步服务器 |
有关于联合身份验证并实现单点登录的具体实现步骤,大家可以参考我的另一篇博客,Office 365实现单点登录系列(5)—配置单点登录
--------------------------------------------------------------华丽的分割线-------------------------------------------------------------
回到我们这篇文章的主题,传递身份验证Pass-through Identity Authentication允许用户使用相同的密码登录到本地和云端的应用程序,这种身份验证方式使用户只需要记住一套账户和密码,提高了用户使用体验的同时,降低了IT的运维难度。当用户使用Azure AD登录时,会直接验证用户本地Active Directory的密码。
无缝单点登录Seamless Single-Sign On为用户在公司内网使用加了域的电脑登录应用服务提供了单点登录的体验,同时管理员不需要配置任何本地组件(如AD FS和AD FS Proxy),只需要配置一个没有DMZ要求的轻量级代理即可完成配置。启用后,用户不需要输入密码即可登录Azure AD。
注意:Pass-Through Authentication& Seamless Single Sign-On目前只可以用于全球版的Office 365,暂不支持21V运营的Office 365。
一、 配置域
为了确保用户可以登录到Azure AD,您需要将Global O365的域作为备用UPN后缀添加到Active Directory中。在域控服务器上打开Server Manager,点击Tools,选择“Active Directory Domains and Trusts”,右键单击“Active Directory Domains and Trusts”,然后选择“Properties”。

将完整域名添加为“备用UPN后缀”。

打开“Active Directory Users and Computers ”,右键单击“contoso.com”并创建一个名为“Accounts”的新OU,我们将会把测试用户上传到这个OU中。

测试用户全部都放在tetstusers这个notepads里面,里面包含了姓名、账户名称、名、姓以及OU。

创建一个NotePads,输入相关要同步的信息和UPN 后缀,保存为xxx.ps1文件,右键点击run with powershell。

打开“Active Directory User and Computers”,然后打开“Accounts”查看创建的用户,选择一个用户并查看“Accounts”选项卡,验证UPN后缀是否已正确添加。
二、 配置Azure AD Connect以及Pass-through Authentication
通过https://www.microsoft.com/en-us/download/details.aspx?id=47594下载最新版本的Azure AD Connect目录同步工具, 选择 “Customize”。由于是测试,因此我们将Azure AD Connect装在DC上面,一般情况下,由于域控服务器工作负载较重,我们不建议Azure AD Connect安装在DC上面。

保留默认配置,点击 “Install”。

在“User Sign-in” 页面选择 “Pass-through authentication” 身份验证方式,并启用Single sign-on,点击 “Next”。

输入Office 365全球版的全局管理员凭据,单击 “Next”。

选择“contoso.com”作为林,然后点击“Add Directory”添加目录。

在“Azure AD登录配置”页面上,选择“Continue without any verified domains”,然后单击“Next”。在“域和OU过滤”页面上,可以指定要进行目录同步的域和OU。

保持“Identifying Users”和“Filtering”默认值,然后单击“下一步”。
在“Optional Features”页面中,选择密码同步,单击下一步后点击install。


接下来我们配置Seamless Single Sign-On,在DC上,打开”Server Manager”,选择“Group Policy Management”,展开域名 “contoso.com”,右键 “Default Domain Policy”进行编辑。

在“Group Policy Management Editor”,按照如下路径来启动策略:“User Configuration -> Policies -> Adminitrator Templates -> Windows Components -> Internet Explorer -> Internet Control Panel -> Security Page -> Site to Zone Assignment List”,点击“Enable”启动策略,并将所需的URL添加到所有加入域的计算机上的内网区域:
Value Name: https://autologon.microsoftazuread-sso.com
Value: 1
Value Name: https://aadg.windows.net.nsatc.net
Value: 1

运行Command Prompt,运行组策略更新“gpupdate”。

三、 在Azure Portal上查看Pass-through Authentication 的配置
上文第二大点,我们已经演示了如何配置Azure AD Connect并实现Seamless Single Sign-On的功能,现在我们在Azure门户上查看刚刚做的配置。
使用全局管理员的账户登录Azure门户(https://portal.azure.com),点击 “Azure Active Directory”,选择 Azure AD Connect,查看“Pass-through Authentication”以及“Seamless Signle Sign-On shows”显示为启用。

点击“Pass-through Authentication” 查看认证代理的详细信息。

在DC上,打开Server Manager,点击Tools,选择“Active Directory Users and Computers”,单击“View -> Advanced Features”,导航到“Computers” ,确认 “AzureADSSOACC” 计算机账户已创建成功。

四、 测试Seamless Single Sign-On
我们可以在加域的机器上(成功)和非加域的机器上(失败)都测试Seamless SSO ,如果Seamless Single Sign-on 失败,则会自动退回到Pass-through 认证(机会主义认证)。
1. 创建测试用户
按照以下路径添加一个测试用户:“Control Panel -> User Accounts -> Give other users access to this computer”,点击“Add”,在User Name输入“adionne” ,Domain输入“CONTOSO,点击下一步,为该用户赋予“Administrator” 的权限,点击Finish完成用户创建。

2. 使用加域机器测试Seamless SSO
在加域的机子上,打开IE,输入https://myapps.microsoft.com,输入我们刚刚创建的测试用户账户,无需输入密码,就可以成功登录服务,这是我们使用的就是Seamless SSO进行的登录。打开Command Prompt,运行“Klist” 命令行,查看以前我们创建的机器账号的其中一条HTTP SPNs。

关闭游览器,使用InPrivate window模式打开游览器,输入
https://myapps.microsoft.com/m365x306829.onmicrosoft.com没有输入用户名和密码,我们就可以成功登陆了,这是因为`domain_hint` 查询参数已经传递到Azure AD登录请求中。

3. 域外机器访问
在域外的机器访问https://myapps.microsoft.com链接,输入我们刚刚创建的测试用户,adionne@m365x306829.onmicrosoft.com,发现我们必须输入密码才可以登录,Seamless SSO失败。

关闭游览器窗口,打开Inprivate模式下的游览器,输入
https://myapps.microsoft.com/m365x306829.onmicrosoft.com网址,发现还是需要输入账户名和密码,才可以完成登录。
Office 365 Pass-through身份验证及Seamless Single Sign-On的更多相关文章
- [ Office 365 开发系列 ] 身份认证
前言 本文完全原创,转载请说明出处,希望对大家有用. 通常我们在开发一个应用时,需要考虑用户身份认证及授权,Office 365使用AAD(Azure Active Directory)作为其认证机构 ...
- 中国版 Office 365 (X-Tenant / Tango) 功能验证报告 - 2 基本步骤
说明: 1. 前期准备 - 在Azure上模拟出生产环境: 包括父域域控.子域域控.父域的Exchange Server.子域的Exchange Server.对Exchange Server, 需要 ...
- 中国版 Office 365 (X-Tenant / Tango) 功能验证报告 - 1 简介
花了点时间做了一次Office 365 X-Tenant的 POC,对过程做了记录和总结,在这里会陆续分享: (一) 简介 这次POC的系统环境是模拟一个公司的生产环境: 1. 公司总部在国外,拥有 ...
- 2017年10月31日结束Outlook 2007与Office 365的连接
2017 年10月31日 ,微软即将推出 Office 365中Exchange Online邮箱将需要Outlook for Windows的连接,即通过HTTP Over MAPI方式,传统使用R ...
- [ Office 365 开发系列 ] Graph Service
前言 本文完全原创,转载请说明出处,希望对大家有用. 通过[ Office 365 开发系列 ] 开发模式分析和[ Office 365 开发系列 ] 身份认证两篇内容的了解,我们可以开始使用Offi ...
- 如何解决Dynamics 365的错误:用户身份验证无效,MSIS0006
关注本人微信和易信公众号: 微软动态CRM专家罗勇 ,回复246或者20170312可方便获取本文,同时可以在第一间得到我发布的最新的博文信息,follow me!我的网站是 www.luoyong. ...
- 证明你是你——快速开启Windows Azure多重身份验证
中国版Windows Azure的多重身份验证(Multi-Factor Authentication)功能已经开放.这个功能说白了就是要“证明你是你”.目前可以支持以下几种验证方式: 手机,短信验证 ...
- 使用中国版 Office 365 -- Team Site分享
Team Site(工作组网站)主要用于团队内部的协同工作,团队(组织机构)内部每个需要使用Team Site的用户都需要一个Office 365的license.但是如果我们需要将Team Site ...
- 无责任Windows Azure SDK .NET开发入门篇二[使用Azure AD 进行身份验证]
二.使用Azure AD进行身份验证 之所以将Azure AD 作为开始,是应为基本上我们所有应用都需要进行安全管理.Azure Active Directory (Azure AD) 通过以下方式简 ...
随机推荐
- C/C++程序调试和内存检测
程序出现错误很正常,一个优秀的程序员必须学会调试,发现错误并改正.减少程序错误最有效的方法是:在敲代码之前,多花点时间思考,如何构造程序,数据结构和算法,尽量把细节提前写下来,可以尝试着在纸上写出核心 ...
- MySQL死锁检测和回滚
最近碰到“TOO DEEP OR LONG SEARCH IN THE LOCK TABLE WAITS-FOR GRAPH, WE WILL ROLL BACK FOLLOWING TRANSACT ...
- PHP数组基本的操作方法
1.数组操作的基本函数 数组的键和值: array_values($arr);获得数组的值 array_keys($arr);获得数组的键名 array_flip($arr);数组中的值与键名互换(如 ...
- CentOS普通用户没有sudo权限
sudo是linux系统管理指令,是允许系统管理员让普通用户执行一些或者全部的root命令的一个工具,如halt,reboot,su等等.这样不仅减少了root用户的登录 和管理时间,同样也提高了安全 ...
- 比较ArrayList和LinkedList的异同
1.ArrayList是实现了基于动态数组的数据结构,而LinkedList是基于链表的数据结构: 2.对于随机访问get和set,ArrayList要优于LinkedList; 3.对于添加和删除操 ...
- BAT技术需求,你能达到多少?
作为中国互联网界的传奇和标杆企业,BAT 三家公司的一举一动受互联网人的精密亲密关注.进入 BAT 成为大厂的一员成了许多互联网人职业生活生存追逐的方针之一. 本文的作者作为一个非科班毕业,出身于三流 ...
- C#的字节与流
计算机中文件有很多种,我们知道实际存在计算机中的都是二进制.这里我记录了通过流对文件的读取操作. 一.首先在这里简单涉及下位,字节,字符的概念. 位(bit):可以表示0或1: 字节(byte):由8 ...
- HDU1560(KB2-E IDA星)
DNA sequence Time Limit: 15000/5000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Tot ...
- c#中表达式的返回值是啥?
今天在学javascript的时候发现它其中有一个语法是这样的(a="haha).length;这样也能够输出haha这个字符串的长度,然而我在使用c#的时候分行读取txt文本的时候也用这个 ...
- Github的readme.md的排版
排版格式: 1 标题与文字格式 标题 # 这是 H1 <一级标题> ## 这是 H2 <二级标题> ###### 这是 H6 <六级标题> 文字格式 **这是文字粗 ...