我正在将ASP.NET WebForm 2.0网站从Windows Server 2003(IIS 6)迁移到Windows Server 2012R2(IIS 8.5)。
该网站为内部用户使用Windows身份验证。
在IIS 6中,Windows身份验证工作正常。
在IIS 8.5中,有时Windows身份验证有效,用户可以看到该网站,但有时,Windows身份验证根本不起作用,用户看到404错误(“无法找到网页”错误是显示)。
我使用Fiddler观看网站流量:
每当Windows身份验证工作时,我看到Web请求都有Authorization标头,如下所示: 授权:谈判TlRMTVNTUAADAAAAGAAYAIAAA .................. (总共650个字符)
每当Windows身份验证不起作用时,我看到Web请求要么没有Authorization标头,要么具有Authorization标头,如下所示: 授权:协商TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAADA ==(总共80个字符)
您能建议如何解决此问题吗? 如何使Windows身份验证在IIS 8.5中一致地工作。
我还注意到IIS中的Windows身份验证设置中有2个提供程序: - 谈判 - NTML
我已重新排序这些提供商,但仍然遇到同样的问题。
答案 0 :(得分:3)
Negotiate标头变小是名为NTLM Pre-Auth
的功能的一部分 Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
所以这是一个IE客户端功能,客户端只发送部分auth头作为NTLM pre-Auth.This article的一部分。另外我看到你的网站没有使用kerberos(NTLM令牌以TlRMTV开头......)。
从IIS服务器端,您可以禁用内核模式 身份验证并验证其是否有效
很奇怪,你收到404错误。你的应用程序中是否有任何要求它只适用于kerberos(kerberos授权,双跃点等)?通常你的应用程序应该有一个kerberos令牌,除非一些基本的东西是fine
修改强>
如前所述,看起来该网站使用的是NTLM,而不是使用Kerberos。这是因为kerberos无法使用外部域或IP地址。因此它将回退到NTLM并且使用NTLM IE可能会使用NTLM pre-Auth。我仍然不知道404错误,通常你应该得到401错误。获得404可能是应用程序特定的。
答案 1 :(得分:0)
经过3天的调查,我们的网络团队已经意识到这个网站在IIS中有2个绑定:
他们已删除与外部IP地址的绑定,该网站与Windows身份验证完美配合。