将 AD FS 基于声明的身份验证用于 web 上的 Outlook
OWA以及EAC的传统身份验证方法如下:(标注黄色的是当前所使用的身份验证)
- Active Directory client certificate authentication(Active Directory 客户端证书身份验证)
- Basic authentication(基本身份验证)
- Digest authentication(摘要式身份验证)
- Forms authentication(表单身份验证)
- Windows authentication(Windows 身份验证)
准备工作
为 web 上的 Outlook 和 Exchange Server 中的 EAC 设置基于 AD FS 声明的身份验证涉及以下额外的服务器:
- Windows Server 2012 或更高版本的域控制器(Active Directory 域服务服务器角色)
- Windows Server 2012 或更高版本的 AD FS 服务器(Active Directory 联合身份验证服务服务器角色)
- 操作身份必须是 Domain Admins、Enterprise Admins 或 local Administrators 安全组的成员才能安装 AD FS,并在 AD FS 服务器上创建所需的信赖方信任和声明规则
AD FS的证书要求
AD FS需要两种基本类型证书:
- AD FS 服务器、客户端、Exchange 服务器和可选 Web 应用程序代理服务器之间用于加密 web 服务流量的服务通信安全套接字层(SSL)证书。 建议使用由内部或商业证书颁发机构(CA)颁发的证书,因为所有客户端都需要信任此证书。
- AD FS 服务器、Active Directory 域控制器和 Exchange 服务器之间的加密通信和身份验证的令牌签名证书。 建议使用默认的自签名 AD FS 令牌签名证书。 | 证书公用名(CN) | 类型 | 必需服务器 | 说明 | | —- | —- | —- | —- | | adfs.lab.com | CA颁发 | ADFS、Web代理 | 此为对client可见的主机名,客户端需要信任此证书颁发者 | | ADFS Signing - adfs.lab.com | 自签名 | ADFS、Exchange、Web代理 | 默认自签名证书需要手动将其导入到所有Exchange服务器上受信任的根证书存储中 | | mail.lab.com (*.lab.com) | CA颁发 | Exchange、Web代理 | 用于加密到 web 上的 Outlook 的外部客户端连接的典型证书 |
在 AD FS 中为 web 上的 Outlook 和 EAC 创建信赖方信任和自定义声明规则
- /在 Outlook 网页和 EAC URL 值中使用的尾部斜杠()是特意使用的。 AD FS 信赖方信任和 Exchange 访问群体 URI 必须相同,这一点非常重要。 它们都必须具有或都必须在其 url 中省略尾部斜杠。
在 AD FS 中为 web 上的 Outlook 和 EAC 创建信赖方信任
- 打开AD FS管理工具
- 选择“信赖方信任”,右击选择“添加信赖方信任”,或在“操作”窗格中选择“添加信赖方信任”
- 打开“添加信赖方信任向导”,在“欢迎”页面中点击“启动”(在Windows 2016中提示选择“声明感知”和“非声明感知”,保持默认“声明感知”即可)
- 在”选择数据源“ 页上,选择 “手动输入有关信赖方的数据“,然后单击 “下一步“
- 在 “指定显示名称“ 页上,配置以下设置:完成后,点击“下一步”
- 对于 web 上的 Outlook:
- 显示名:Outlook Web Application
- 注释(可选)
- 对于EAC:
- 显示名:Exchange Admin Center
- 注释(可选)
- 在 “选择配置文件“ 页上,验证已选择 “AD FS 配置文件“,然后单击 “下一步“ (Windows 2016中没有此步骤)
- 在 “配置证书“ 页上,单击 “下一步“(不指定可选令牌加密证书)
- 在 “配置 URL“ 页上,选择 “启用对 ws-federation 被动协议的支持“,并在 “信赖方 ws-federation 被动协议 URL“ 中输入以下信息:完成后,点击“下一步”
- OWA: 在 web URL 上键入外部 Outlook (https://mail.lab.com/owa)
- EAC: 键入外部EAC URL (https://mail.lab.com/ecp)
- 在 “配置标识符“ 页上,单击 “下一步“ (”信赖方信任标识符“ 中列出了上一步中的 URL)
- 在 “立即配置多重身份验证?“ 页面上,确认我不想在此时为此信赖方信任配置多重身份验证设置,然后单击 “下一步“ (Windows 2016 此页面为“选择访问控制策略”,可在此处配置多重身份验证以及步骤11中的授权规则)
- 在 “选择颁发授权规则“ 页上,确认选中了 “允许所有用户访问此信赖方“,然后单击 “下一步“
- 根据需要创建组别,例如 Office365 用户访问需要通过ADFS,将所有Office 365用户加入同一特定组,根据特定组访问此信赖方
- 在“准备好添加信任”页面,复查设定,点击“下一步”
- 在 “完成“ 页上,取消选中 “在向导关闭时打开此信赖方信任的编辑声明颁发策略对话框“,然后单击 “关闭“
在 AD FS 中为 web 上的 Outlook 和 EAC 创建自定义声明规则
对于 OWA 和 EAC,需要创建两个声明规则:
- Active Directory 用户 SID
- Active Directory UPN
- 在 AD FS 管理控制台中, “信赖方信任“,然后选择 “Outlook Web Application“ 或 “Exchange Admin Center“。 在 “操作“ 窗格中,选择 “编辑声明规则(声明颁发策略)“
- 在打开的 “编辑” 的 “编辑声明规则 “ 窗口中,在 “颁发转换规则“ 选项卡,然后单击 “添加规则“
- 将打开 “添加转换声明规则“ 向导。 在 “选择规则类型“ 页上,单击 “声明规则模板“ 下拉箭头,然后选择 “使用自定义规则发送声明“。 完成后,单击“下一步”
- 在 “配置规则“ 页面上,输入以下信息:
ActiveDirectoryUserSID
- 声明规则名称:ActiveDirectoryUserSID
- 自定义规则:复制并粘贴以下文本
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/primarysid"), query = ";objectSID;{0}", param = c.Value);
完成后,单击 “完成“,然后添加第二条
ActiveDirectoryUPN
- 声明规则名称:ActiveDirectoryUPN
- 自定义规则:复制并粘贴以下文本:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"] => issue(store = "Active Directory", types = ("http://schemas.xmlsoap.org/ws/2005/05/identity/claims/upn"), query = ";userPrincipalName;{0}", param = c.Value);
- 声明规则名称:ActiveDirectoryGroupSID
- 自定义规则:复制并粘贴以下文本:
c:[Type == "http://schemas.microsoft.com/ws/2008/06/identity/claims/windowsaccountname", Issuer == "AD AUTHORITY"]=> issue(store = "Active Directory", types = ("http://schemas.microsoft.com/ws/2008/06/identity/claims/groupsid"), query = ";tokenGroups(SID);{0}", param = c.Value);
完成后,单击“完成”
- 返回到 “编辑声明规则 “ 窗口,单击 “确定“
将 Exchange 组织配置为使用 AD FS 身份验证
- 在ADFS服务器上运行以下命令,查找需要导入的ADFS令牌签名证书的指纹,查找主题值为“CN=ADFS Signing - ”
Set-Location Cert:\LocalMachine\Root; Get-ChildItem | Sort-Object Subject | Where-Object {$_.Subject -like "CN=ADFS*"}
- 在Exchange服务器中,运行以下命令配置ADFS身份验证
Set-OrganizationConfig -AdfsIssuer https://<FederationServiceName>/adfs/ls/ -AdfsAudienceUris "<OWAURL>","<EACURL>" -AdfsSignCertificateThumbprint "<Thumbprint>"
- AD FS URL: https://adfs.lab.com/adfs/ls/
- OWAURL: https://mail.lab.com/owa
- EACURL: https://mail.lab.com /ecp
- AD FS 令牌签名证书指纹: ADFS Signing - adfs.lab.com 具有指纹值的证书 34BAE8E8BE424049A2496E0031FD424CFD48C7AD
在OWA以及ECP虚拟目录中配置AD FS身份验证
- 需要先配置EAC虚拟目录,而后才能配置OWA
- 默认情况下,仅对 web 上的 Outlook 和 EAC 虚拟目录启用基本和窗体身份验证
为组织中每个Exchange服务器虚拟目录上配置
Get-EcpVirtualDirectory | Set-EcpVirtualDirectory -AdfsAuthentication $true
Get-OwaVirtualDirectory | Set-OwaVirtualDirectory -AdfsAuthentication $true
在 Exchange 服务器上重新启动 IIS
iisreset /restart
验证生效
- 浏览器中打开OWA,https://mail.lab.com/owa
- 重定向到 ADFS登陆页面,https://adfs.lab.com/adfs/ls/
- 输入用户名密码后点击登录
- 成功加载OWA页面