默认情况下,Windows Server 中的 Active Directory 联合身份验证服务 (AD FS) 启用了 Windows 集成身份验证 (WIA),适用于组织内部网络 (Intranet) 中任何使用浏览器进行身份验证的应用程序的身份验证请求。 例如,应用程序可以是基于浏览器的,使用 WS-Federation 或 SAML 协议,也可以是使用 OAuth 协议的丰富应用程序。 WIA 为最终用户提供无缝登录应用程序,而无需手动输入其凭据。 但是,某些设备和浏览器无法支持 WIA,因此来自这些设备的身份验证请求会失败。 此外,某些与 NTLM 协商的浏览器上的体验并不理想。 建议采用基于表单的身份验证方法,适用于此类设备和浏览器。
Windows Server 2016 和 Windows Server 2012 R2 中的 AD FS 使管理员能够配置支持回退到基于表单的身份验证的用户代理列表。 可通过两种配置实现回退:
Set-ADFSProperties
commandlet 的“WIASupportedUserAgentStrings”属性Set-AdfsGlobalAuthenticationPolicy
commandlet 的“windows integratedfallbackenabled”属性
WIASupportedUserAgentStrings 定义支持 WIA 的用户代理。 在浏览器或浏览器控件中执行登录时,AD FS 会分析用户代理字符串。 如果用户代理字符串的组件与 WIASupportedUserAgentStrings 属性中配置的用户代理字符串的任何组件不匹配,AD FS 将回退到提供基于表单的身份验证,前提是 WindowsIntegratedFallbackEnabled 标志设置为 True。
默认情况下,新的 AD FS 安装会创建一组用户代理字符串匹配项。 但是,由于浏览器和设备的变化,这些可能已过时。 特别是,Windows 设备具有类似的用户代理字符串,只是在令牌上略有不同。 以下 Windows PowerShell 示例为目前市场上支持无缝 WIA 的当前设备集提供了最佳指导:
Set-AdfsProperties -WIASupportedUserAgents @("MSIE 6.0", "MSIE 7.0; Windows NT", "MSIE 8.0", "MSIE 9.0", "MSIE 10.0; Windows NT 6", "Windows NT 6.3; Trident/7.0", "Windows NT 6.3; Win64; x64; Trident/7.0", "Windows NT 6.3; WOW64; Trident/7.0", "Windows NT 6.2; Trident/7.0", "Windows NT 6.2; Win64; x64; Trident/7.0", "Windows NT 6.2; WOW64; Trident/7.0", "Windows NT 6.1; Trident/7.0", "Windows NT 6.1; Win64; x64; Trident/7.0", "Windows NT 6.1; WOW64; Trident/7.0", "MSIPC", "Windows Rights Management Client")
上述命令将确保 AD FS 仅涵盖以下 WIA 用例:
用户代理 | 用例 |
---|---|
MSIE 6.0 | IE 6.0 |
MSIE 7.0;Windows NT | IE 7、Intranet 区域中的 IE。 “Windows NT”片段由桌面操作系统发送。 |
MSIE 8.0 | IE 8.0(没有设备发送此内容,因此需要更具体的说明) |
MSIE 9.0 | IE 9.0(没有设备发送此内容,因此不需要更具体的说明) |
MSIE 10.0;Windows NT 6 | 适用于 Windows XP 和更高版本的桌面操作系统的 IE 10.0 已排除 Windows Phone 8.0 设备(首选项设置为“移动”),因为它们会发送 用户代理:Mozilla/5.0(兼容;MSIE 10.0;Windows Phone 8.0;Trident/6.0;IEMobile/10.0;ARM;Touch;NOKIA;Lumia 920) |
Windows NT 6.3;Trident/7.0 Windows NT 6.3;Win64;x64;Trident/7.0 Windows NT 6.3;WOW64;Trident/7.0 |
Windows 8.1 桌面操作系统,不同平台 |
Windows NT 6.2;Trident/7.0 Windows NT 6.2;Win64;x64;Trident/7.0 Windows NT 6.2;WOW64;Trident/7.0 |
Windows 8 桌面操作系统,不同平台 |
Windows NT 6.1;Trident/7.0 Windows NT 6.1;Win64;x64;Trident/7.0 Windows NT 6.1;WOW64;Trident/7.0 |
Windows 7 桌面操作系统,不同平台 |
MSIPC | Microsoft 信息保护和控制客户端 |
Windows Rights Management 客户端 | Windows Rights Management 客户端 |
若要为除 WIASupportedUserAgents 字符串中提到的用户代理之外的用户代理启用回退到基于表单的身份验证,请将 WindowsIntegratedFallbackEnabled 标志设置为 true
Set-AdfsGlobalAuthenticationPolicy -WindowsIntegratedFallbackEnabled $true
此外,请确保为 Intranet 启用基于表单的身份验证。
为 Chrome 配置 WIA
可以将 Chrome 或其他用户代理添加到支持 WIA 的 AD FS 配置。 这样就可以无缝登录到应用程序,而无需在访问受 AD FS 保护的资源时手动输入凭据。 按照以下步骤在 Chrome 上启用 WIA:
在 AD FS 配置中,在基于 Windows 的平台上为 Chrome 添加用户代理字符串:
Set-AdfsProperties -WIASupportedUserAgents (Get-ADFSProperties | Select -ExpandProperty WIASupportedUserAgents) + "Mozilla/5.0 (Windows NT)"
同样,对于 Apple macOS 上的 Chrome,请将以下用户代理字符串添加到 AD FS 配置:
Set-AdfsProperties -WIASupportedUserAgents (Get-ADFSProperties | Select -ExpandProperty WIASupportedUserAgents) + "Mozilla/5.0 (Macintosh; Intel Mac OS X)"
确认 Chrome 的用户代理字符串现已在 AD FS 属性中设置:
Get-AdfsProperties | Select -ExpandProperty WIASupportedUserAgents
注释
随着新的浏览器和设备发布,建议你协调这些用户代理的功能,并相应地更新 AD FS 配置,以在使用上述浏览器和设备时优化用户的身份验证体验。 更具体地说,建议在将新的设备或浏览器类型添加到 WIA 的支持矩阵时,在 AD FS 中重新评估 WIASupportedUserAgents 设置。