我正在尝试在我们正在开发的 Intranet 应用程序上实现 SSO。我正在使用SPNEGO为了这。现在我在配置 SSO 时遇到了一些问题,希望这里有人能够帮助我。
设置是这样的:
- 带有 tomcat 的 Linux 服务器,为 Intranet 应用程序提供服务
- Windows Server 2008 作为域 Controller (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 specified. Downgraded to Basic Auth (and/or SSL) but downgrade not supported.
所以我做错了什么,但经过一天的配置和策略摆弄后,我只是不明白它是什么。
希望得到一些回应。
最佳答案
Kerberos 不适用于 IP,请使用完全限定的域名。
关于java - SSO 身份验证,响应始终为 NTLM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13936243/