Azure AD B2C:错误请求 - 请求太长 HTTP 错误 400。请求标头的大小太长。登录后

问题描述 投票:0回答:2

我知道之前已经有人问过类似的问题在堆栈溢出,但它对我不起作用。请在回答/评论之前阅读整个问题。

我已经在两个网络应用程序中实现了 AD B2C,直到上周都工作正常。现在突然间我们得到了

错误请求 - 请求太长 HTTP 错误 400。请求的大小 标题太长。

当用户尝试登录网站时。由于我的网站要求每个用户都登录,所以它完全阻止了我们。

我的网络应用程序也无法在隐身/私密窗口中运行。浏览器:Chrome、Firefox 和 Edge

删除所有历史记录后,当我在 Chrome 中打开应用程序(不是隐身模式)时,我可以看到 Web 应用程序 URL 中有大约 160 多个 Cookie。

是的,太多的cookie似乎正在杀死我的网络应用程序,但即使在删除浏览器和私人浏览的所有历史记录之后,它也会发生。

即使我已将声明属性减少到 3,怀疑更多的声明属性可能会增加标头大小。

我也尝试过这个但没有成功。

底线:删除 cookie 和减少索赔对我们来说都不起作用,我们被阻止了。提前致谢。

azure azure-web-app-service azure-active-directory azure-ad-b2c azureportal
2个回答
5
投票

在向 Microsoft 支持团队提出请求后,我解决了此问题。

原因: Owin 中间件有一个众所周知的问题,它没有设置身份验证 cookie,导致我们最终陷入登录循环。我使用的是旧版本的 OWIN。

解决方案: OWIN 版本 3.1.0.0 已集成了 cookie 管理器方面的修复。

注意: 尽管使用了修复程序,但如果我们在应用程序中使用自定义 SESSIONSTATE 处理程序,我们仍然可能会遇到问题。在 STARTUP.AUTH.CS 中,我们需要进行以下更改

旧:

app.UseCookieAuthentication(new CookieAuthenticationOptions{});

新:

app.UseCookieAuthentication(new CookieAuthenticationOptions   {
      AuthenticationType = "Cookies",
      CookieManager = new Microsoft.Owin.Host.SystemWeb.SystemWebChunkingCookieManager() 
  });

下面是讨论相同问题的问题:

第一次成功登录后,第二次登录会导致无限重定向循环 MVC .NET 5 OWIN ADAL OpenIDConnect

希望这对其他人有帮助。
快乐编码。


0
投票

通过 OpenID Connect 将 Microsoft Entra ID(以前称为 Microsoft Azure AD)集成到我自己的部署在 IIS 上的具有 ASP.NET Core Identity 的 Identity Server 实现中时,我遇到了同样的错误。

登录 Microsoft 后,某些用户在 cookie 中包含过多信息,因此我的故障排除重点是让我的 Windows Server 支持标头中接收的附加数据量。

为了实现此目的,我在以下 Windows 注册表路径中添加了两个新值: HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\HTTP\Parameters

姓名 值类型 价值数据
最大字段长度 双字 65534(十进制)
最大请求字节数 双字 415028(十进制)

这里是帮助我解决该问题的 Microsoft 官方文档:HTTP 400 Bad Request(请求标头太长)对 HTTP 请求的响应 - 解决方法 2:设置 MaxFieldLength 和 MaxRequestBytes 注册表项

© www.soinside.com 2019 - 2024. All rights reserved.