我正在尝试在我们正在开发的 Intranet 应用程序上实现 SSO。我为此使用SPNEGO 。现在我在配置 SSO 时遇到了一些麻烦,希望这里有人能够帮助我。
设置是这样的:
- 带有 tomcat 的 Linux 服务器为 Intranet 应用程序提供服务
- Windows Server 2008 作为域控制器 (Active Directory)
- 带有 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),但不支持降级。
所以我做错了,但是在摆弄配置和策略一天之后,我就是不知道它是什么。
希望得到一些回应。