为不支持 Windows 集成身份验证 (WIA) 的设备配置基于 Intranet 表单的身份验证

默认情况下,Windows Server 的 Active Directory 联合身份验证服务 (AD FS) 中已启用 Windows 集成身份验证 (WIA),用于在组织内部网络 (Intranet) 中为使用浏览器进行身份验证的任何应用程序发出的身份验证请求。 例如,应用程序可以是使用 WS 联合身份验证或 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

可以向支持 WIA 的 AD FS 配置添加 Chrome 或其他用户代理。 这样,在访问受 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)"

确认现在已在 AD FS 属性中设置 Chrome 的用户代理字符串:

Get-AdfsProperties | Select -ExpandProperty WIASupportedUserAgents

configure auth

注意

随着新浏览器和设备的发布,建议协调这些用户代理的功能并相应地更新 AD FS 配置,以优化用户在使用所述浏览器和设备时的身份验证体验。 更具体地说,建议在将新设备或浏览器类型添加到 WIA 的支持矩阵时,重新评估 AD FS 中的“WIASupportedUserAgents”设置。