我知道有数以千计的人在将集成 Windows 身份验证与 IIS 一起使用时遇到问题的报告,但它们似乎都导致网页不适用或我已经尝试过的解决方案。我之前已经部署了几十个这样的站点,所以要么服务器/配置发生了一些奇怪的事情,要么我已经研究了太久而没有看到明显的情况。
简而言之,一切都在我的本地机器上完美运行,但在生产服务器上却崩溃了,据我所知,它具有完全相同的配置。
在本地机器上:
- 该机器运行的是 Windows 7 Ultimate、Service Pack 1、IIS 7.5。
- 该站点已成功测试,使用 IIS 和 VS Web 开发服务器。
- IIS 站点配置禁用了除Windows 身份验证之外的所有身份验证方法。
- 本地机器不在任何域中。
- 设置的提供程序是 Negotiate 和 NTLM(不是 Negotiate:Kerberos)。
- 扩展保护关闭。
- 所有经过测试的浏览器(IE、Firefox、Chrome)都会显示质询提示,并允许我使用我的(本地)Windows 帐户登录到localhost域。
- 所有经过测试的浏览器也使用不透明的本地 IP 地址工作 - 因此浏览器本身似乎并不关心该站点是“本地”还是“远程”。
- 我在网页上添加了一条显示行,显示当前登录的用户,它准确地显示了我的期望(无论我使用哪个本地用户登录)。
在远程机器上:
- 服务器运行的是 Windows Server 2008 R2、IIS 7.5。
- 加载网页会立即导致401.2 错误:由于身份验证标头无效,您无权查看此页面。 从来没有出现过挑战提示。
- IIS 站点配置禁用了除Windows 身份验证之外的所有身份验证方法。
- 远程机器不在任何域中。
- 设置的提供程序是 Negotiate 和 NTLM(不是 Negotiate:Kerberos)。
- 扩展保护关闭。
- 在远程计算机(远程桌面会话)上,无论域是localhost还是外部 IP 地址,Internet Explorer 中都会出现相同的错误。 …