WWW身份验证无法使用Kerberos(仅NTLM)



我在为intranet网站设置SSO时遇到问题。目前我正在使用Tomcat8.0和Waffle1.8.4。它们工作得很好,但只有一个问题:浏览器(按照此处和此处所述应用设置后的Firefox和IE(不能进行Kerberos身份验证,只能进行NTLM身份验证。

我用Wireshark分析了流量,Tomcat发送http头字段"WWW-Authenticate",浏览器在头字段"Authentication"中回答一个base64编码的字符串,其中包含NTLMSSP。我想这不是Kerberos,是吗?

我读到一篇文章(WWW身份验证使用NTLM而不是Kerberos(,说要使Kerberos工作,必须使用命令setspn.exe在AD中注册服务器。我试图为setspn(在这里描述(获得正确的语法,但没有任何运气。服务器具有以下参数:

  • IP:10.0.1

  • 服务:Tomcat Http

  • 端口:8080

  • 帐号名称:company net\foobar

我将此命令用于setspn:

setspn -A "HTTP/10.0.0.1:8080 company-netfoobar"

但不起作用。服务器和客户端都在同一个Windows域中,使用Windows 10。

它怎么了?

我还需要什么吗?

Kerberos依赖DNS(有效主机名(和SPN来运行。到目前为止,你似乎已经做了一些研究,这很好。不太为人所知的是,当你将一个工作良好的Kerberos客户端指向主机的IP,而不是它的DNS主机名时,Kerberos将被绕过,取而代之的是回退身份验证机制——在这种情况下是NTLM。

Michael-O,这个论坛的顶级Kerberos贡献者,在2012年的回答中说得最好:

Kerberos不适用于IP地址,它依赖于域名和仅正确的DNS条目。

最新更新