对于使用OpenID Connect对Azure进行身份验证的网站,我有时会收到消息“错误请求 - 请求太长时间” . 请求标头的大小太长了 . 现在问题出现在Google Chrome MF和Edge上 . 删除cookie后,该站点将用于一个会话 . 重新启动浏览器后问题将返回 . 我正在运行OpenID Connect软件包4.0.0版 .
该问题是由openid connect创建的nonce cookie引起的 . 当它显示错误时,此时,浏览器(Chrome,Firefox和Edge)中存在超过20个这样的cookie . 我尝试了不同的东西,但仍然没有解决方案 .
-
@ andrew.fox在Too many cookies OpenIdConnect.nonce cause error page "Bad Request - Request Too Long"的回答没有改变 .
-
将软件包降级到版本3.0.0并没有解决它的问题 . 新版本的相关软件包引起的额外问题 .
-
按照https://github.com/IdentityServer/IdentityServer3/issues/1124中的建议删除旧的随机数cookie只会导致无限循环的删除和创建cookie .
EDIT
将OpenIDConnect软件包降级到3.0.0版时,我第一次打开浏览器(在IIS中设置已发布的代码之后)登录成功并转发到正确的页面 . 关闭并重新打开浏览器时(当用户仍然登录时),登录时会启动无限循环,因为即使成功登录后User.Identity.IsAuthenticated始终为false .
2 回答
奇怪的是,删除您的cookie并尝试使用新的浏览器不起作用!
尝试将以下内容添加到web.config:
看到:
http://www.iis.net/ConfigReference/system.webServer/security/requestFiltering/requestLimits
您可能还必须在web.config中添加以下内容:
当然,这些数字只是示例,您不必在这些设置中使用这些确切的值 .
此外,解决无限循环的情况:http://erlend.oftedal.no/blog/?blogid=55
在我们的系统上解决了Chrome“OpenID Connect:错误请求,请求时间过长” . 但现在Firefox正在循环.. / smh
我有同样的错误,但我的解决方案最终变得不同 . 我将通过Azure AD连接成功进行身份验证 . Login.microsoft将重定向回我的应用程序 . 该应用程序然后将反弹回login.microsoft并且它将在那里循环,直到它以Bad Request Took To Long错误结束 . 然后我注意到我为应用程序提供了大约39个用于OpenID.connect的cookie . 如果我删除它们,它将循环重新加载 . 如果我删除它们并删除了login.microsoft cookie,我回到开始并登录成功但在登录后循环 . 在这里检查并进一步研究,我发现问题出在AccountController.cs文件中 . 似乎在登录页面之后,它将转到服务器的根目录,而不是应用程序的根目录 . 该服务器上有一些应用程序 . 默认设置为RedirectUri =“/”,它将转到服务器的根目录 . 该应用程序不存在,所以它会循环回来 . 循环后,login.microsoft将给另一个好的cookie并发送回来,哈哈 . 我只需要将RedirectUri =“/”更改为RedirectUri =“/ serverfolderpath”,它就可以了!
AccountController.cs
我通过检查线索“在Web应用程序中检查Azure身份验证”发现了这一点,因为我觉得应用程序认为身份验证是错误的 . 事实是,它永远不会回到应用程序 .
Check Azure Authentication in Web Application