我在Windows Server2008上运行NodeJS服务器。
服务器不会做太多事情,但我设置了401的头,WWW-Authenticate协商,我知道它可以使用他的默认Kerberos身份验证,如果它不可用,则使用NTLM。
我下载了fiddler,并发现当我试图访问服务器时,它会尝试使用NTLM(提示我输入用户名和密码)而不是Kerberos进行身份验证,即使计算机与服务器在同一个域中,当我运行命令"klist“时,它确实会显示他有令牌,这意味着他已经使用Kerberos进行了身份验证(不是吗?)。
我的问题是,我如何才能让它使用Kerberos而不是NTLM进行身份验证--为什么他首先要使用NTLM?
有什么想法吗?
发布于 2014-07-15 19:19:43
您的客户端可能无法获取该计算机的服务器票证。使用Wireshark并检查Kerberos TGS-REQ消息。请搜索我的类似答案,我已经能够在这样的情况下提供帮助。
发布于 2014-07-15 23:04:15
最有可能的是,您需要阅读有关Kerberos的内容。您可能有一个TGT (票证授予票证),它证明您已通过AD (KDC)的身份验证。您仍然需要为特定的服务/服务器实例提供ST (服务工单)。http/服务器名称。为此,您需要为该服务注册一个SPN。SPN必须注册到将对ST进行解密的帐户。
Fiddler显示你没有发送ST表明你没有收到ST。你可能需要一个嗅探器,而不仅仅是Fiddler。您将看到,在端口88上,您的工作站尝试从KDC请求ST,然后失败,然后回退到NTLM。您希望看到ST请求返回一个ST。
这是一个很好的开始,尽管它来自2000年的http://technet.microsoft.com/en-us/library/bb742431.aspx
要获得更有意义的帮助,我需要查看您的应用程序URL、通过setspn -l获取的SPN信息以及服务器主机名。
https://stackoverflow.com/questions/24756677
复制相似问题