浏览器在收到 WWW-Authenticate: Negotiate 时挂起
Posted
技术标签:
【中文标题】浏览器在收到 WWW-Authenticate: Negotiate 时挂起【英文标题】:Browser Hangs when receive WWW-Authenticate: Negotiate 【发布时间】:2017-07-14 02:20:03 【问题描述】:当 Windows7 上的 IE 或 Chrome 收到带有“WWW-Authenticate: Negotiate”标头的响应时,它会挂起几秒钟。
我假设它正在向 KDC 发出网络请求并且请求超时。不过这可能是错误的假设。
服务器keytab
确定浏览器查询哪个KDC?
有什么办法可以调试吗?
谢谢!
【问题讨论】:
【参考方案1】:要回答您的第一个问题,请避免假设查找 KDC 超时 - 只有网络捕获才能告诉您这一点。虽然它实际上可能正在这样做,但它也可能会故障转移到使用 NTLM,然后因为 Kerberos 在某处被破坏而成功。
要回答您的第二个问题,keytab 不会确定浏览器查询哪个 KDC。 keytab 里面没有任何东西可以做到这一点。我在此答案的底部为您放置了示例 keytab 的图像。现在,被查询的 KDC 由 DNS 控制。该过程只会被 C:\Windows\krb5.ini 中设置的值覆盖 - 如果该文件存在 - 默认情况下它在 Windows 上不存在。要回答您的最后一个问题,您可以使用 Wireshark 捕获进行调试,在 WireShark 搜索字段中过滤“kerberos”以查看 Kerberos 流量可能在做什么或不做什么。这将告诉你所有你需要知道的。
【讨论】:
非常感谢!浏览了您的所有建议,但 Wireshark 完成了这项工作。我发现 KRB5 发送了对错误用户名的请求,然后是大量使用相同错误名称的 LDAP 搜索。我曾经使用没有 krb 名称的 samba 连接到同一个应用服务器的共享驱动器,并且 Windows 以某种方式记住了它。反正问题已经解决了! 干得好。谢谢你回来。以上是关于浏览器在收到 WWW-Authenticate: Negotiate 时挂起的主要内容,如果未能解决你的问题,请参考以下文章
无法以角度访问 $http 响应中的“WWW-authenticate”标头
JavaScript/jQuery:无法获得“WWW-Authenticate”响应标头