IE7中的Windows身份验证无法正常工作。

13

我真的需要帮助,已经尝试了很多方法,但是想不到更好的解决办法。

我的网站托管在内部开发服务器上,只能被公司员工访问。

服务器环境是Windows 2008 R2,IIS 7.5和SQL 2008 Express。我使用Active Directory进行身份验证。

在Chrome中,网站可以正常加载,并自动识别我的用户名登录。

但在IE7中查看该网站时,会出现以下响应:

"401 - 未经授权:由于提供的凭据无效,拒绝访问。 您没有使用提供的凭据查看此目录或页面的权限。"

我已经尝试了以下方法:

  • 在IIS中仅启用Windows身份验证(其他禁用)
  • 将NTLM移动到提供程序列表的顶部
  • 将完全控制权限赋予所有人/ IUSR / Network Service / DeafultAppPool等
  • 检查IE设置(启用集成的Windows身份验证已选中)
  • IE7中的用户身份验证设置为“仅在企业区域中自动登录”。
  • 在web.config中设置以下内容:
    • <anonymousIdentification enabled="false" />
    • <authentication mode="Windows" />
    • <identity impersonate="false" />
  • 执行:cscript adsutil.vbs set w3svc/NTAuthenticationProviders "NTLM"

我相信这不是浏览器设置的问题,因为我在IE7访问企业内部网站时已经通过AD进行了身份验证。

有什么问题?我该如何解决呢?

非常感谢


好奇。在IE中转到工具|Internet选项|安全(选项卡),然后选择Intranet Zone和Custom Level。滚动到安全设置窗口的底部,首先选择“使用当前用户名和密码自动登录”。保存并查看是否仍然收到401消息。如果这不起作用,请尝试“提示输入用户名和密码”。尝试一下。还要验证浏览器右下角状态栏上是否显示了Intranet图标。有时,此行为是由于未在Trusted Sites选项卡中配置host.domain造成的。 - JimSTAT
@raklos 这是我解决问题的方法。下载Wireshark。捕获Chrome和IIS之间的网络流量,并查看身份验证的工作原理。捕获IE和IIS之间的网络流量,然后查看其故障原因。 - Harvey Kwok
3个回答

20
从 technet 文章中,http://technet.microsoft.com/en-us/library/cc754628(v=ws.10).aspx
默认的 Windows 身份验证设置为 Negotiate。这意味着客户端可以选择适当的安全支持提供程序。要强制使用 NTLM 身份验证,必须更改 ApplicationHost.config 文件中 元素下 元素中 元素的值。
IE 正在使用 Kerberos 并且没有像 Chrome 和 Firefox 那样回退到 NTLM。您必须按照以下步骤在 IIS7.5 中强制使用 NTLM 身份验证:
  1. 选择您的站点。
  2. 双击身份验证。
  3. 选择“Windows身份验证”(确保已启用)。
  4. 在右侧列中点击“提供程序...”。
  5. 选择NTLM并点击“上移”。
enter image description here

这应该被标记为答案。非常好的步骤,解决了问题。完美无瑕! - jlaverde

5
在类似环境中,我曾经遇到一个与web应用相关的问题。后来发现IE尝试使用Kerberos进行身份验证,而在IIS身份验证设置中关闭了Kerberos。Chrome在失败后转向NTLM,因此Chrome中的web应用程序可以正常工作。
解决方案相当简单。
1. Open IIS manager
2. Open "Authentification" node
3. Right click on 'Windows Authentification' item.
4. Select "Advanced settings" in context menu.
5. Switch off kernel mode (it's not compartible with Kerberos provider.)
6. Repeat p.1-3.
7. Select "Providers..." in context menu
8. Add Kerberos to enabled providers list
9. Restart IIS

2
我不得不重新启动服务器才能使其生效。感谢详细的步骤... - user007

1
我在Windows 2008 R2的IIS 7.5上使用Windows身份验证和模拟时遇到了同样的问题。我尝试了这里提供的另外两个解决方案,但都没有成功。但是在应用了这些更改之后,我重新打开了内核模式,然后它就起作用了。我不知道为什么它能够工作,但我已经按照这个过程在两个不同的虚拟目录上成功地实现了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接