我正在尝试配置 Google Chrome(和 Firefox),以使用通过 ADFS SAML/Kerberos 端点隧道传输的 Active Directory 和使用 Shibboleth 的 Apache 应用程序进行身份验证。以下是我在每台机器内的一些设置。
Active Directory 设置:我正在使用配置了 Kerberos DES 加密的 Active Directory 用户帐户,并且在 Windows Server 2012 r2 中也具有 Kerberos 预身份验证。
IE 设置:IE 的 Internet 和受信任站点安全设置已将用户身份验证设置为“使用当前用户名和密码自动登录”(自动登录 Windows 当前用户)。ADFS 和 Apache 应用程序的域已添加到允许的站点中。
Windows Server 2012 r2 ADFS 设置:Windows Server 2012 r2 使用 ADFS 配置,并启用 SAML 和 Kerberos Endpoints。
Shibboleth SP 设置:Shibboleth SP 在 Apache 中运行,并配置为使用 SAML。
成功发生的事情:Windows 用户帐户可以使用 IE9 及更高版本成功登录任何 Windows 7 及更高版本的操作系统。Windows 用户登录 Apache 应用程序后不会出现任何提示。Windows 用户会立即被引导至配置了 Shibboleth SP 的 Apache 应用程序。
怎么了?每当我访问 Google Chrome 或 Firefox 时,它都不会立即指向安全应用程序内容页面。相反,它会将 Windows 用户连接到 ADFS 登录屏幕,并且登录失败(因为它似乎正在使用 Active Directory 设置中的 Kerberos,而 ADFS 在登录屏幕上不使用它)。
目标:假设 Google Chrome 采用 Internet Explorer 的安全设置,则登录 Apache 应用程序应该可以轻松完成。
那么,如何正确配置 Google Chrome(或任何其他配置)以允许 Windows 用户自动登录到 Apache 应用程序?
更新
错误我从 Apache 应用程序收到以下错误:
openSAML::FatalProfileException at (https://c-app01.contoso.com/Shibboleth.sso/SAML2/POST)
SAML response reported an IdP error.
Error from identity provider:
Status: urn:oasis:names:tc:SAML:2.0:status:Responder
答案1
Chrome 和 Firefox 使用“系统登录凭据”(Kerberos 身份验证机制)的配置有所不同。
铬合金
要配置 chrome,您需要启动应用程序以下参数:
- auth-server-whitelist - 允许的 FQDN - 设置 IdP 服务器的 FQDN。示例:
chrome --auth-server-whitelist="*aai-logon.domain-a.com"
在“登录页面”中您能找到正确的 FQDN:
火狐浏览器
要访问 Firefox 设置,请在地址栏中输入 about:config,然后按 [Enter]。这将显示当前浏览器安装的可自定义首选项的长列表。您需要将 IdP 服务器的 FQDN(完全限定域名)添加到受信任 URI 列表中:
- network.negotiate-auth.trusted-uris - IdP 服务器的 FQDN。
在“登录页面”中,您可以找到正确的 FQDN
Firefox - 高级配置
注意力:这些选项仅适用于“高级”用户!如果您的操作系统没有集成 GSSAPI(如某些Linux发行版)。你可以使用以下命令指定所需的外部库:
- network.negotiate-auth.gsslib -(默认值:空) - 指定备用 GSSAPI 共享库。
- network.negotiate-auth.using-native-gsslib - 告知是否将使用“本机”
(true) 或外部 (false) GSSAPI 库。
以下是有关协商/身份验证的其他设置:
- network.negotiate-auth.delegation-uris(默认值:空) - 允许(受信任)的 FQDN 凭证委派。
- network.negotiate-auth.allow-proxies(默认值:true) - 使用协商方法启用代理身份验证。
- network.auth.use-sspi(仅在 Windows 上,默认值:true) - 是否使用 Microsoft 的 SSPI 库,如果禁用则使用 GSSAPI。