所有客户端浏览器在通过本地代理服务器运行时反复询问NTLM身份validation。
当浏览器通过本地代理指向互联网时,一些但不是所有的客户端都会被重复提示,并向代理服务器进行身份validation。 我已经使用firefox live头文件和fiddler检查了头文件,并且在所有情况下,请求SSL资源时都会发生身份validation提示。
这个例子如下:
GET http://gmail.google.com/mail/ HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave- flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms- xpsdocument, application/xaml+xml, */* Accept-Language: en-gb User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Accept-Encoding: gzip, deflate Proxy-Connection: Keep-Alive Host: gmail.google.com GET http://gmail.google.com/mail/ HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave- flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms- xpsdocument, application/xaml+xml, */* Accept-Language: en-gb User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Accept-Encoding: gzip, deflate Proxy-Connection: Keep-Alive Host: gmail.google.com Proxy-Authorization: NTLM TlRMTVNTUAABAAAAB7IIogkACQAvAAAABwAHACgAAAAFASgKAAAAD1dJTlhQMUdGTEFHU0hJUDc= GET http://gmail.google.com/mail/ HTTP/1.1 Accept: image/gif, image/jpeg, image/pjpeg, image/pjpeg, application/x-shockwave- flash, application/x-ms-application, application/x-ms-xbap, application/vnd.ms- xpsdocument, application/xaml+xml, */* Accept-Language: en-gb User-Agent: Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 5.1; Trident/4.0; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729) Accept-Encoding: gzip, deflate Proxy-Connection: Keep-Alive Proxy-Authorization: NTLM TlRMTVNTUAADA (more stuff goes here I cut it short) Host: gmail.google.com
此时用户名和密码提示已经出现在浏览器中,无论input什么内容,正确的凭据,随机的废话,浏览器不接受任何东西,在这个盒子里,它将继续popup。 如果我按取消,我有时会得到一个HTTP 407错误,但在其他场合我点击取消网站继续下载并正常显示。
有些客户端通过我们的代理服务器运行,这是可重复的,但在其他情况下,根本不会发生。
在客户端计算机正常工作的情况下,我可以看到的唯一区别是第三个SSL资源请求会返回一个200响应,如下所示:
CONNECT gmail.google.com:443 HTTP/1.0 User-Agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0; MALC) Proxy-Connection: Keep-Alive Content-Length: 0 Host: gmail.google.com Pragma: no-cache Proxy-Authorization: NTLM TlRMTVNTUAADAAAAGAAYAIAAAA A SSLv3-compatible ClientHello handshake was found.
我已尝试重置用户帐户以及Active Directory中的计算机帐户。 正在使用的用户帐户和密码是正确的,密码已被重置,因此不会同步。 我已经从域中删除了客户端,甚至代理服务器,并重新join。 我已经安装了一个完全独立的代理服务器,当我将客户端指向另一个不同的IP地址上的其他代理服务器时,会发现完全相同的问题。
ntlm需要启用保持活动的tcp会话,因为它绑定到tcp连接,通常通过代理或短暂超时,并且许多代理也使用http 1.0 =每个连接一个请求。 基本上给出同样的问题 将授权更改为Kerberos,摘要或纯文本身份validation。 如果在加速模式下运行,站点在ssl中也不应该成为问题。
最好的select是,如果你可以改变你的代理软件,寻找保持活着和http 1.1连接。 没有经验的微软代理服务器我来自另一个阵营,但我很确定你正在经历的是我所描述的。
问候,
彼得