这个 Kerberos/AD 设置可行吗?

这个 Kerberos/AD 设置可行吗?

我们的 IDAM 设置略微复杂一些:

在此处输入图片描述

即,最终用户的机器和浏览器与父 AD 位于一个网络中,而我们基于 Jetty 的应用程序和它可以与之通信的 AD(本地 AD)位于另一个网络中。

两个 AD 之间存在双向信任。父网络中的浏览器在受信任的站点中拥有本地域。

Jetty 服务器的设置如下:

  • 它使用针对本地 AD 中的主体生成的 keytab 文件
  • 它作为 Windows 服务在本地 AD 中定义的用户下运行
  • 领域、域-领域映射和 kdc 是根据本地 AD 的域定义的
  • 它使用 spnego - isInitiator 设置为 false;doNotPrompt 为 true;storeKey 为 true

问题是:

  • 作为测试,从本地网络内的浏览器访问服务器(即链接到本地​​ AD)作品- 日志中出现了 Kerberos 调试信息,我可以在 HTTP 流量中看到正确的 Kerberos 协商,并且用户会自动登录。太棒了。
  • 然而,从父网络内的浏览器访问服务器(我们的用户将这样做)不起作用!浏览器会返回 401 unauth,但随后会提示输入凭据,输入凭据后会显示空白屏幕。然后单击地址栏并按 Enter 会执行以下两项操作之一,具体取决于凭据是用于远程 AD 还是本地 AD:

    • 本地 AD 凭据然后正常登录,在日志中从头开始使用 Kerberos(GET 请求、401 未授权响应、Kerberos 标头请求等)
    • 远程 AD 凭据无法登录(GET 请求,401 未授权响应,看起来像 NTLM 标头Authorization: Negotiate <60 or so random chars>:)

不管怎样,它的提示都是错误的!

这些症状有解释吗?我们的设置能达到我们想要的效果吗?

至于上述描述可能存在哪些错误:我提到的有关 Jetty 服务器的任何配置都应该是准确的,因为我就是这么做的。我很乐意提供更多详细信息。有关 AD 或父网络浏览器的任何配置都可能存在问题,因为它不在我的控制范围内,而且我是收到配置报告后才知道的,而不是亲眼所见。

答案1

如果没有看到数据包捕获,我猜HTTP/www.website.comSPN 需要注册到运行应用程序的帐户。Microsoft 的目录服务团队在以下 URL 上发布了一篇精彩的多部分文章,专门讨论此主题。

https://blogs.technet.microsoft.com/askds/2008/05/29/kerberos-authentication-problems-service-principal-name-spn-issues-part-1/

在每个环境中从客户端运行数据包捕获(netmon、wireshark)以确定正在查找的 SPN。确定后,使用设置spncmd 将其注册到运行该应用程序的帐户。

值得一提的是,Kerberos 仅在 LAN 上有效。如果有人需要在无法访问域控制器的地方进行访问,那么您需要考虑使用 Shibboleth 或 ADFS 等 SSO。

编辑:正如提到的@alex-h,需要将浏览器配置为通过 Kerberos 进行静默身份验证。

  • IE浏览器- 虽然 TechNet 文章不是专门针对您的应用程序,但步骤是相同的​​。
  • 火狐- 与 IE 链接相同,不完全匹配,但步骤相同。

最后,这是 Microsoft Sharepoint 部署的一个常见问题。他们希望在用户通过域身份验证后,通过 Kerberos 进行的 SSO 能够悄无声息地进行。因此,如果上述答案不能解决您的问题,请尝试查看他们的论坛,例如:

Chrome、Safari 或 FireFox 上的 Kerberos

答案2

请先尝试使用未启用 NTLM 的浏览器(Chrome/Firefox)。问题似乎是您启用了预身份验证,并且双向信任可能尚未建立。

对于预认证,请查看此处https://support.microsoft.com/en-us/kb/2749007和这里https://hc.apache.org/httpcomponents-client-ga/tutorial/html/authentication.html

相关内容