为什么 Internet Explorer 9 用户代理字符串(“MSIE 部分”)会与 Apache Tomcat 7 中的代理和/或 NTLM 身份验证混淆?

为什么 Internet Explorer 9 用户代理字符串(“MSIE 部分”)会与 Apache Tomcat 7 中的代理和/或 NTLM 身份验证混淆?

在我的网络中,我们位于代理(pac 脚本)后面,当尝试访问以下 url 格式的站点时:

http://服务器名称.domain.com:8080/somePath

IE(9.0.8112.16421)无法浏览该网站(需要 http auth NTLM),但我能够打开主页http://服务器名称.域名.com:8080/ (这实际上是 Web 服务器 apache tomcat 的主页)

查看最新更新,看起来该问题与 NTLM 身份验证更相关

然而,我注意到 Chrome 可以完美浏览该网站,并且通过在 Internet Explorer 中打开开发人员工具(F12)并将用户代理字符串设置为“Chrome”,IE 便可以浏览该网站而无需进行任何其他更改。

现在的问题是,proxy+http auth+ie 有问题吗?<<更新:不是代理>>当我使用 Chrome 用户代理字符串时还有哪些变化,为什么以这种方式工作?

我一直在阅读并知道有一些方法可以使用 IEM 永久更改 IE9 (9.0.8112.16421) 用户代理(http://technet.microsoft.com/en-us/library/cc770379.aspx) 和 Windows 注册表,但需要管理员权限,不知道这是不是问题所在或者是其他问题。

注意:当检查开发工具(IE)中的“网络”选项卡时,结果显示“已中止”,甚至没有请求标头/正文,只有响应标头可用:

Key Value
Response    HTTP/1.1 401 Unauthorized
Server  Apache-Coyote/1.1
WWW-Authenticate    NTLM TlRMTVNTUAACAAAAAAAAACgAAAABggAAAAICAgAAAAAAAAAAAAAAAA==
Content-Type    text/html;charset=utf-8
Content-Length  951
Date    Fri, 16 Jan 2015 17:04:36 GMT
Cache-Control   proxy-revalidate
Proxy-Connection    Keep-Alive
Connection  Keep-Alive
Proxy-support   Session-based-authentication

更新 我与其他国家的合作伙伴进行了核实,他们无需切换用户代理字符串即可打开网站,代理脚本看起来几乎相同,来自 ipconfig 命令的 DNS 信息看起来也相同,我只能认为我们的代理服务器(放置 pac 脚本的地方)中存在问题<<更新:不是代理>>

我想我可以丢弃有关 DNS 服务器的任何信息,因为通过切换用户代理我可以访问该网站,但如果您知道我的说法不正确,请发表评论。

更新 2 刚刚意识到设置任何其他自定义用户代理我都可以打开该网站,我甚至设置了单词“hello”,并且成功了。经过多次尝试/失败后,我还意识到“MSIE”用户代理字符串中的部分是导致失败的原因(除了代理服务器中的任何其他错误配置之外)。

通过删除“MSIE”甚至只是一个字符,我就可以浏览该网站,但如果我在任何其他用户代理字符串中包含这 4 个字符,那么我就无法浏览该网站。

更新 3 到目前为止,我在其他国家的队友无需使用其他用户代理字符串即可访问该网站,一切都表明代理 + http 身份验证与活动目录身份验证混淆了,或者类似的东西我已经阅读了一些有关 kerberos 身份验证的问题,但到目前为止我不知道它是如何工作的以及为什么 IE 会出现问题。

更新 4 我刚刚检查了我队友的请求/响应,看起来几乎一样,他们也使用 NTLM 身份验证,但他们能够使用 Internet Explorer 访问该网站无需修改用户代理字符串

更新 5 好吧,我们对本地账户进行了域名迁移,除了不通过“其他网络”(我们位于拉丁美洲,在我看来,我们的旧域名在亚洲或类似的地方,没有从 IT 方面获得太多信息)之外,不知道还有其他变化,但现在它可以工作了。如果有人想分享关于可能发生的变化或 NTLM 身份验证如何影响的任何好想法,我将非常感激评论/答案

笔记 Web 服务器是 Apache Tomcat/7.0.33,使用 http 身份验证,您知道/认为这是活动目录中与权限相关的内容吗?我有服务器名称和 IP,如果这是权限问题,我可能缺少哪种权限?将用户代理切换到 Chrome 时,我在 fiddler 上看不到 NTLM 标头,为什么我可以使用 Chrome 用户代理(没有 NTLM 身份验证)访问,但不能使用 IE(NTLM 身份验证)<<更新:域迁移后,我可以使用 IE 访问并使用 NTLMT 身份验证>>?

相关内容