我试图在我们正在开发的Intranet应用程序上实现SSO。我正在使用SPNEGO。现在我在配置SSO时遇到了一些麻烦,希望这里有人能够帮助我。SSO身份验证,响应总是NTLM
的设置是这样的:
- Linux服务器与Tomcat来服务于内联网应用
- Windows Server 2008作为域控制器(Active Directory)
- Windows 7客户端与IE9和Firefox
当我打开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
默认NTLM不支持SPNEGO,所以我让我的日志以下条目:
java.lang.UnsupportedOperationException:指定NTLM。降级为基本身份验证(和/或SSL),但不支持降级。
所以我做错了什么,但是在我花了一天的时间摆弄配置和策略之后,我无法弄清楚它是什么。
希望得到一些回应。
将其更改为FQDN,但问题仍然存在。谢谢你的帮助! – pderaaij
您的反向记录是否正确?你把服务器领域放到了可信区域吗?你用Wireshark分析了流量吗? –
我正在使用Wireshark进行扫描,但我认为我没有足够的知识直接查看问题所在。 可以肯定,我们有相同的解释。你有什么意思与反向记录? – pderaaij