Asp.net IIS 8.5中的Windows身份验证-间歇性404错误

Asp.net IIS 8.5中的Windows身份验证-间歇性404错误,asp.net,iis,webforms,windows-authentication,iis-8,Asp.net,Iis,Webforms,Windows Authentication,Iis 8,我正在将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身份验证工作

我正在将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请求具有如下授权标头: 授权:协商………………。(总共650个字符)

  • 每当Windows身份验证不起作用时,我看到web请求要么没有授权标头,要么有授权标头,如下所示: 授权:协商tlrmtvntuaabaaaaal4ii4gaaaaaaaaaaaaaaaaaaaaaaaaaaadw==(总共80个字符)

你能建议如何解决这个问题吗? 如何使Windows身份验证在IIS 8.5中保持一致

我还注意到IIS中的Windows身份验证设置中有两个提供程序: -协商 -NTML


我已经对这些提供程序进行了重新排序,但仍然存在相同的问题。

协商头更小,这是名为NTLM Pre-Auth的功能的一部分

授权:协商tlrmtvntuaabaaal4ii4gaaaaaaaaaaaaaaaaaaaaaaaaaaadw==

因此,这是一个IE客户端功能,其中客户端只发送部分身份验证头作为NTLM预身份验证的一部分。我还看到您的网站并不仅仅使用kerberos(NTLM令牌以TlRMTV开始…)

从IIS服务器端,您可以禁用内核模式 验证并验证其是否有效

  • 在IIS管理器中,转到网站
  • 打开身份验证
  • 单击Windows身份验证
  • 从操作窗格(右侧)-打开高级设置
  • 取消检查内核模式身份验证
  • 重新启动IIS
但很奇怪,您得到的是404错误。您的应用程序中是否要求它只在kerberos(kerberos委派、双跳等)上工作?通常,应用程序应该有一个kerberos令牌,除非有一些基本的东西

编辑:


正如之前所怀疑的那样,该网站似乎使用了NTLM而不是Kerberos。这是因为kerberos无法与外部域或Ip地址一起工作。因此它将退回到NTLM,而使用NTLM IE可能会使用NTLM预验证。我仍然不知道404错误,通常你应该得到401错误。获取404可能是特定于应用程序的。

协商头更小,这是名为NTLM Pre Auth的功能的一部分

授权:协商tlrmtvntuaabaaal4ii4gaaaaaaaaaaaaaaaaaaaaaaaaaaadw==

因此,这是一个IE客户端功能,其中客户端只发送部分身份验证头作为NTLM预身份验证的一部分。我还看到您的网站并不仅仅使用kerberos(NTLM令牌以TlRMTV开始…)

从IIS服务器端,您可以禁用内核模式 验证并验证其是否有效

  • 在IIS管理器中,转到网站
  • 打开身份验证
  • 单击Windows身份验证
  • 从操作窗格(右侧)-打开高级设置
  • 取消检查内核模式身份验证
  • 重新启动IIS
但很奇怪,您得到的是404错误。您的应用程序中是否要求它只在kerberos(kerberos委派、双跳等)上工作?通常,应用程序应该有一个kerberos令牌,除非有一些基本的东西

编辑:


正如之前所怀疑的那样,该网站似乎使用了NTLM而不是Kerberos。这是因为kerberos无法与外部域或Ip地址一起工作。因此它将退回到NTLM,而使用NTLM IE可能会使用NTLM预验证。我仍然不知道404错误,通常你应该得到401错误。获取404可能是特定于应用程序的。

经过3天的调查,我们的web团队意识到该网站在IIS中有两个绑定:

  • 一个绑定到内部IP地址
  • 一个绑定到外部IP地址

他们已经删除了与外部IP地址的绑定,该站点与Windows身份验证完美结合

经过3天的调查,我们的web团队发现该网站在IIS中有2个绑定:

  • 一个绑定到内部IP地址
  • 一个绑定到外部IP地址

他们已经删除了与外部IP地址的绑定,该站点与Windows身份验证完美结合

该站点是内部网吗?对于您的两个示例,这两台机器是相同的(例如Win 10 x64,IE 11),还是有任何区别?您的第二个选项是指“每当Windows身份验证不起作用时”@RohithRajan:是的,我已经更新了我的问题。谢谢。@tgolisch:是的,这是内部网站。我使用同一台机器访问该站点。该站点是内部网吗?对于您的两个示例,这两台机器是相同的(例如Win 10 x64,IE 11),还是有任何区别?您的第二个选项是指“每当Windows身份验证不起作用时”@RohithRajan:是的,我已经更新了我的问题。谢谢。@tgolisch:是的,这是内部网站。我使用同一台机器访问该网站。谢谢Rohith。经过3天的调查,我们的web团队发现该网站有两个绑定:一个绑定到内部IP地址,一个绑定到外部IP地址。他们删除了与外部IP地址的绑定,该站点与Windows身份验证完美结合。很高兴知道,感谢更新。我有一些理论,会更新的