![集成 Windows 身份验证仅在 IE 中不起作用](https://linux22.com/image/516424/%E9%9B%86%E6%88%90%20Windows%20%E8%BA%AB%E4%BB%BD%E9%AA%8C%E8%AF%81%E4%BB%85%E5%9C%A8%20IE%20%E4%B8%AD%E4%B8%8D%E8%B5%B7%E4%BD%9C%E7%94%A8.png)
在我的网站中,有一个文件夹不允许匿名访问。它设置为使用集成 Windows 身份验证,因为它位于 AD 域中。登录在 Firefox、Chrome 甚至 Safari 中都可以正常工作,但在 IE8 中不行。有人遇到过这种情况吗?我似乎找不到其他遇到类似问题的人,当然,除了在所有浏览器中登录失败的情况。
答案1
这很可能是由于某处的 SPN 损坏所致。
我怀疑非 Microsoft 浏览器不支持 Kerberos(或者至少不支持与 IE 相同的方式)。
这意味着 IE 可能正在尝试使用 Kerberos 登录,而其他浏览器可能正在使用 NTLM。
如果 http/www.example.com 或 host/www.example.com 存在 SPN,并且它不属于运行应用程序池的帐户,那么这就是此类中断的一个很好的理由。
在 Windows 2008 或更高版本上:
SETSPN -X
将检查重复项;SETSPN -Q http/www.example.com
将查找该特定 SPN 的所有者。
修复您的 SPN 问题,您就可能修复 IE 登录中断的问题。
其他指南可能会告诉您在 IE 高级属性中禁用集成 Windows 身份验证;这是一个愚蠢的举动,它会破坏一切 Kerberos 并掩盖问题。
更多的这里。
答案2
其中一个评论中顺便提到了这一点,但我想特别指出这一点,以防其他人觉得它有用。我遇到了同样的问题,我能够通过更改应用程序池标识来解决它。这可以在给定应用程序池的“高级设置”下找到。
有人将此值设置为“AppPoolIdentity”,但我不得不将其设置回“NetworkService”才能解决问题。
(我试图发布一张图片,但显然我需要更多的声誉。如果有人赞成这个答案,那么我可以添加图片。)
答案3
错误的 SPN 答案似乎是正确的。这意味着,如果您想正确设置 Kerberos,您可能需要向 IT/IS 部门指出问题。
我不推荐“禁用启用集成 Windows 身份验证”解决方案,因为它要求普通用户进入并单击某些内容,而根据管理员配置 IE 的方式,他们甚至可能无权更改这些内容。
如果 Kerberos 设置不能很快修复,更灵活的解决方案是转到 IIS 中的应用程序,单击身份验证,突出显示 Windows 身份验证行(应标记为已启用,其他所有选项均禁用),然后单击右侧的“提供程序...”链接。可能会有两个条目,“协商”和“NTLM”,协商位于顶部。将 NTLM 移至顶部。虽然这会强制您的网站使用 NTLM,这是一种安全风险,但如果 Kerberos 不可用,这是唯一的选择。
答案4
Chrome 提示我输入一次密码并成功。
IE 提示我输入密码三次,但出现 401 未授权错误。
我的问题最终是 IE 和 Chrome 都提示我输入两个不同服务器的凭证。提示输入凭证的原因可能是上周更改了密码。
铬合金提示我使用我的域名帐户。 我的域名\我的用户 ID
但IE促使我ThisServerUrl.com\MyUserId(当然失败了,因为该用户在服务器上不存在,但更糟糕的是 - URL 与服务器名称无关 - M$ 你在想什么???)
希望这可以帮助下一个遇到同样问题的可怜虫。