我正在一个约有 90 个用户的企业环境中实施 Okta 作为单点登录提供商。Okta 的一个功能是桌面单点登录- 用户只需登录自己的机器并进行域身份验证即可通过 Okta 进行身份验证。用户只需打开浏览器,转到公司的 Okta 租户 URL,即可登录。
如果没有此功能,用户在加载 Okta 租户 URL 时会被提示输入其凭据。
DSSO 的实现方式是浏览器从操作系统中获取 Kerberos 票证,该票证本身是在用户通过 Active Directory 域进行身份验证时生成的。然后,浏览器将此票证交回服务器,服务器与 Okta 云进行通信以对用户进行身份验证。
我们环境中的身份验证流程如下:
- 用户登录到他们的机器。登录并通过域进行身份验证后会生成 Kerberos 票证。
- 用户打开浏览器,尝试访问受 Okta 保护/集成的应用程序,或者直接进入他们的 Okta 门户。
- Okta 将用户重定向到我们的负载均衡器,该负载均衡器在 Web 服务器上的 IWA Web 应用程序上终止请求
- IWA Web 应用程序向浏览器发起身份验证请求
- 浏览器从操作系统获取 Kerberos 票证并将其交给负载均衡器,负载均衡器将其传递给 IWA Web 应用程序
- IWA 应用程序验证票证并从 AD 获取用户个人资料
- IWA 应用生成并数字签名 SSO 令牌并将其发送到浏览器
- 浏览器通过 HTML 表单 POST 将 tokent 返回给 Okta
- Okta 完成登录请求并使用 SSO 令牌将用户返回到应用程序
该过程在第 5 步失败,我知道这是因为:
- 请求 Okta 租户 URL 时,Chrome 会提示用户输入 NTLM 凭据
- 此提示发生在 IWA Web 应用程序和浏览器正确配置 DSSO 之前(根据我在开头链接的文档)
- Windows 上的 Chrome、Firefox 和 Internet Explorer 不会出现此提示(DSSO 可在装有 Chrome、Firefox 和 IE 的 Windows 上运行)
- 此提示不会出现在 macOS X 上的 Safari 中,但会出现在 OS X 上的 Chrome 和 Firefox 中
我不明白为什么 Chrome 和 Firefox 没有从 macOS X 中的操作系统获取 Kerberos 票证,但 Windows 中的相同浏览器却可以顺利获取票证。
我尝试过的步骤:
使用以下终端命令设置 Chrome 的白名单设置(Okta 的文档推荐):
$ defaults write com.google.Chrome AuthServerWhitelist“*.example.com”
$ 默认写入 com.google.Chrome AuthNegotiateDelegateWhitelist“*.example.com”
- 使用 SimpleMDM 配置推送设置 Chrome 的白名单设置(此方法实际上已成功将设置推送到 Chrome - 可以通过访问 chrome://policy 并查看设置来证明)
- 卸载防病毒软件
- 将每个可能的 FQDN 添加到步骤 2 中列入白名单的服务器列表中 - 首先是我们在 Windows 中列入白名单的服务器(因为 Windows 确实可以工作),然后是 Okta 支持推荐的 Okta 服务器列表
我仍然无法让此功能正常工作,现在我正在尝试找出是否有办法解决 Chrome 用于从操作系统获取 Kerberos 票证的过程。Chrome 的 Kerberos 票证获取机制的某种调试器会很棒,但我想没有这样的东西可用。
答案1
它应该与以下产品兼容:
$ defaults write com.google.Chrome AuthServerWhitelist '*.example.com'
$ defaults write com.google.Chrome AuthNegotiateDelegateWhitelist '*.example.com'
请注意,我已将“替换为”