2

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

设置是这样的:

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

当我打开 Intranet 应用程序时,我看到一个从客户端到 tomcat 服务器的 GET 请求。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),但不支持降级。

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

希望得到一些回应。

4

2 回答 2

1

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

于 2012-12-18T21:34:24.647 回答
1

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

于 2016-11-20T17:57:58.920 回答