我实现了NTLM SSO,它工作得很好,但是当我想切换到使用登录表单时,IE不能工作:
1.登录我的网站
2.清除会话并重定向到登录页面
3.输入用户名和密码
4.提交,因为我的登录绕过了SSO过滤器,所以它在Firefox浏览器中工作得很好。但在IE中,它仍然发送包含ntlmssp_negotiate消息的请求,而不是表单中包含用户名和密码的post请求。当发生这种情况时,用户无法成功登录系统。
所以我的问题是:如何阻止IE发送ntlmssp_negotiate请求?
发布于 2010-12-01 14:16:20
别担心,你的IE版本是什么?这是MS-IE的一个报告问题。
MS IE“在访问网站的一个经过NTLM身份验证的文件夹后,需要对网站的所有访问进行NTLM身份验证”。此外,如果注册表允许,IE会在第一次NTLM登录时缓存您的凭据。
我以前在我的基于NTLM的Web SSO项目中看到过这个问题。您可以将会话记录为特殊状态,例如“假登录”,并验证登录,但丢弃用户信息。下一个POST操作将提供表单数据,您可以稍后从表单数据中识别用户ID。
请参考http://www.websina.com/bugzero/kb/browser-ie.html
发布于 2012-01-20 23:17:46
IE做了一个优化:一旦它了解到它无论如何都会得到401,并且必须重新传输所有那些庞大的后期数据项(比如文件上传),它就会把它们留在一边,期待401,并在下一次只发送它们。
我在另一个端口上运行NTLM解决了这个问题。
https://stackoverflow.com/questions/4023071
复制相似问题