我在为Intranet网站设置SSO时遇到问题。目前,我正在使用Tomcat 8.0和Waffle 1.8.4。它们工作得很好,但是只有一个问题:浏览器(按here和here所述应用设置后的Firefox和IE)不能进行Kerberos身份验证,只能进行NTLM。
我用Wireshark分析了流量,Tomcat发送了http
头字段“ WWW-Authenticate”,浏览器在头字段“ Authentication”中回答了一个包含NTLMSSP的base64编码的字符串。我猜这不是Kerberos,还是它?
我读了一篇帖子(WWW-Authenticate uses NTLM and not Kerberos),该帖子说,要使Kerberos正常工作,必须使用命令setspn.exe在AD中注册服务器。 我尝试为setspn(described here)获取正确的语法,但是没有任何运气。 服务器具有以下参数:
IP:10.0.0.1
服务:Tomcat-Http
端口:8080
帐户名:company-net \ foobar
我将以下命令用于setpn:
setspn -A "HTTP/10.0.0.1:8080 company-net\foobar"
但不起作用。使用Windows 10,服务器和客户端都在同一个Windows域中。
这是怎么了?
我还需要其他东西吗?
答案 0 :(得分:0)
Kerberos依靠DNS(有效主机名)和SPN起作用。到目前为止,您似乎已经做了一些研究,这很好。众所周知的是,当您将一个本可以正常运行的优良Kerberos客户端指向主机的IP,而不是其DNS主机名时,将绕过Kerberos,而将使用后备身份验证机制-NTLM案件。
Michael-O,该论坛的最大Kerberos贡献者,said it best with his answer about this back in 2012:
Kerberos不适用于IP地址,它依赖于域名和 仅正确的DNS条目。