【问题标题】:SSO authentication, response is always NTLMSSO 身份验证,响应始终为 NTLM
【发布时间】:2012-12-18 15:31:02
【问题描述】:

我正在尝试在我们正在开发的 Intranet 应用程序上实现 SSO。我为此使用SPNEGO。现在我在配置 SSO 时遇到了一些问题,希望这里的人能够帮助我。

设置是这样的:

  1. 带有 tomcat 的 Linux 服务器为 Intranet 应用程序提供服务
  2. Windows Server 2008 作为域控制器 (Active Directory)
  3. 带有 IE9 和 Firefox 的 Windows 7 客户端

当我打开 Intranet 应用程序时,我看到一个 GET 请求从客户端发送到 tomcat 服务器。 tomcat服务器和SpnegoFilter的第一个响应是401未授权,这是对的,因为客户端需要认证。

806 6.117724    192.168.65.50   192.168.65.50   HTTP    284 HTTP/1.1 401 Unauthorized 
WWW-Authenticate: Negotiate\r\n

然后客户端的响应是带有标志 NTLMSSP_NEGOTIATE 的 GET 请求。在这里它打破了。我不期望 NTLM 响应,而是 kerberos/spnego 响应。不知何故,我无法弄清楚如何将正确的响应发送到 tomcat 服务器。

808 6.123277    192.168.65.50   192.168.65.50   HTTP    637 GET / HTTP/1.1 , NTLMSSP_NEGOTIATE

默认情况下,SPNEGO 不支持 NTLM,因此我的日志中出现以下条目:

java.lang.UnsupportedOperationException:指定了 NTLM。已降级为基本身份验证(和/或 SSL),但不支持降级。

所以我做错了,但是在摆弄了一天配置和策略之后,我就是不知道它是什么。

希望得到一些回应。

【问题讨论】:

    标签: java kerberos spnego


    【解决方案1】:

    Kerberos 不适用于 IP,请使用完全限定域名。

    【讨论】:

    • 改成FQDN,问题依旧。感谢您的帮助!
    • 你的反向记录还好吗?您是否将服务器领域放入受信任区域?您是否使用 Wireshark 分析了流量?
    • 我正在用 Wireshark 扫描它,但我认为我没有足够的知识直接看到问题所在。确保我们有相同的理解。反向记录是什么意思?
    • 我指的是反向DNS记录。它们绝对至关重要。 Yu可以把pcap文件发给我,我会告诉你原因。
    • 注册SPN可以通过IP工作,但这是最差的做法。
    【解决方案2】:

    您是否已注册 SPN 并且是否已加入客户端域? WWW-Authenticate: Negotiate 将告诉 Web 浏览器尝试使用 kerberos。浏览器根据地址栏中的 URL 将该请求交给操作系统 (SSPI)。该 URL 必须在 AD 中有一个 SPN。如上所述,在您的 URL 中使用 IP 更为复杂,但可以做到。如果您的客户端未加入域,则需要进行额外的配置工作才能使其联系您的 AD KDC。 Firefox 也需要额外的设置。用 IE 解决这个问题,以消除它,当问题解决后他们会回到 FF。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多