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