为啥客户端在 IE 中访问网络时集成 Windows 身份验证失败?

Posted

技术标签:

【中文标题】为啥客户端在 IE 中访问网络时集成 Windows 身份验证失败?【英文标题】:Why does Integrated Windows Authentication fail when clients access off the network in IE?为什么客户端在 IE 中访问网络时集成 Windows 身份验证失败? 【发布时间】:2011-02-03 12:59:37 【问题描述】:

客户端设置:

仅受影响的浏览器是 IE 6-8(Firefox、Chrome、Opera 和 Safari 都可以正常工作) 用户将尝试从连接到我们网络的公司笔记本电脑访问我们的网络应用程序。 这台机器将成为我们工作组的成员,并将公司 DNS 列为受信任的 Intranet 站点。 (相关应用程序将成为其成员) 安全登录模式设置为仅在 Intranet 区域自动登录,并在客户端浏览器上启用 IWA 身份验证。

服务器设置:

Windows Server 2003 fp2 应用程序将首先重定向到在 IIS 中禁用匿名访问并启用 IWA 的授权 asp 页面。

应该发生的是,由于客户端当前不在网络上,当调用此页面时,它应该提示用户输入网络凭据。但在 IE 中,用户收到“无法显示页面”错误,而不是提示,因为 IIS 管理器拒绝访问 asp 页面。如果公司 DNS 从受信任的 Intranet 站点列表中删除,则它会正确提示,但会在下次该计算机连接到网络或 *** 时禁用单点登录。

我的假设是,由于 IE 使用 IWA 并且该站点被列为内部站点,因此当没有找到网络时,IE 只会将空值发送到尝试进行身份验证的服务器,该值会被迅速退回。其他浏览器没有安全区域,因此当网络凭据不存在时,服务器会提示它们。

有没有办法解决这个问题,以便我们的客户可以将公司 DNS 保留在 Intranet 区域中,但在不在网络上时仍然有服务器提示输入凭据?据我所知,任何允许在 asp 页面上进行匿名访问的尝试都会导致 AUTH_USER 返回 null 并再次破坏 SSO。

【问题讨论】:

【参考方案1】:

IE 将拒绝通过代理使用 NTLM/Negotiate,除非该代理注入了一个

Proxy-Support: Session-Based-Authentication

响应标题。

此外,IE 在决定正确的行为时会考虑区域设置。您可能需要将登录的可信站点设置调整为“提示输入用户名和密码”。

【讨论】:

【参考方案2】:

您的问题的原因很可能是您的客户正在通过的代理。此代理可能会阻止来自客户端的 NTLM 身份验证。这是我过去多次看到的常见问题。

【讨论】:

NTLM 身份验证似乎运行良好,我们认为是 Kerbos 失败了。我们更改了服务器以强制进行 NTLM 身份验证,目前看来它正在工作。

以上是关于为啥客户端在 IE 中访问网络时集成 Windows 身份验证失败?的主要内容,如果未能解决你的问题,请参考以下文章

Javascript中..为啥IE执行addEventListener()会出错??

window.open(url,name)设置name属性后,在谷歌火狐等浏览器中均可在指定窗口打开,可是为啥在ie中不行

为啥使用jQuery时不能通过window对象访问对象?

用javascript控制html5中audio的音频总时长,为啥在IE中,通过window.onload获取不到,而点击按钮可以

为啥服务器无法访问

关于Python网络编程中端口号为啥不会重复问题释义