加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angularjs – IE使用NTLM身份验证时随机发送空POST主体(使用angu

发布时间:2020-12-17 17:46:42 所属栏目:安全 来源:网络整理
导读:我们看到IE 11中缺少POST的看似随机调用的问题.进一步检查后,来自浏览器的请求包括NTLM协商令牌.我们也经常在GET上看到这个标记,但它们不受身体问题的影响,因为它们没有. Chrome和FF没有此问题. 进一步的调查显示,如果我们的会话超时并且浏览器被重新刷新,那
我们看到IE 11中缺少POST的看似随机调用的问题.进一步检查后,来自浏览器的请求包括NTLM协商令牌.我们也经常在GET上看到这个标记,但它们不受身体问题的影响,因为它们没有. Chrome和FF没有此问题.

进一步的调查显示,如果我们的会话超时并且浏览器被重新刷新,那么我们将在此之后以大约1-2分钟的间隔始终看到此问题.我的理解是,如果IE“期望”401,那么它将不包括POST主体,因为期望再次发生NTLM握手.

我们有一个角度app(目前混合Angular 1和2,但在此之前发生在1).角度应用程序使用对我们的Spring启动应用程序进行restful webservice调用.我们使用华夫饼为NTLM auth

// Shiro-Waffle / Security
'com.github.dblock.waffle:waffle-parent:1.7.3','com.github.dblock.waffle:waffle-shiro:1.7.3','org.apache.shiro:shiro-core:1.2.3','org.apache.shiro:shiro-web:1.2.3',

https://blogs.msdn.microsoft.com/ieinternals/2010/11/21/challenge-response-authentication-and-zero-length-posts/

我有一个糟糕的解决方法,我将在下面作为答案发布,但我根本不喜欢它.

解决方法

好的,我发现了一个注册表黑客.基本上,IE主动发送NTLM凭证,而不从服务器发送401.当发送“pre auth”时,IE将省略POST主体(如果请求是POST.)如果会话已经有效并且服务器已经授权您,则它会在没有正文的情况下通过请求,并且会导致错误服务器(假设您的POST需要正文.)

所以正常的NTLM协商会是这样的

>来自客户的请求(使用POST正文) – >服务器返回401
www-authenticate:negotiate,www-authenticate:NTLM
>客户发送
使用NTLM令牌的附加请求(没有帖子正文) – >服务器返回401
NTLM令牌
>客户端发送第3个会话请求(使用POST正文)并返回服务器
200

有了这个优化

>客户期望401并发送NTLM令牌(没有身体) – >服务器令牌返回401
>客户端通过会话发送第二个请求(带有正文) – >服务器返回200

出现问题

>客户期望401并发送NTLM令牌(没有身体) – >服务器处理请求并收到内部错误(可能是500)

要添加的注册表项阻止此“优化”

HKEY_CURRENT_USER/Software/Microsoft/Windows/CurrentVersion/Internet Settings/ 
Add the following registry value: 
Value Name: DisableNTLMPreAuth
Data Type: REG_DWORD
Value: 1

或者将这些条目保存到计算机上的.reg文件中,然后双击它

Windows Registry Editor Version 5.00

[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionInternet Settings]
"DisableNTLMPreauth"=dword:00000001

我不确定为什么IE认为它必须重新验证,但是从广泛的测试看起来就像IE有一个会话超时或会话失效并且它从服务器获得401,它想要每1重新验证一次之后2分钟.这可能与您在身份验证时所处的URL有关,因为您可能不在根.我提供的第一个链接谈论了很多关于IE的URL的挑剔性以及它如何猜测应该授权什么以及什么不应该基于路径.

相关文章:

Zero Length POSTS

NTLM Pre-Auth

NTLM Pre-Auth

NTLM Pre-Auth jcifs

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读