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

Ank*_*mar 6 azure azure-active-directory azureportal azure-web-app-service azure-ad-b2c

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

我已经在两个 Web 应用程序中实现了 AD B2C,直到上周都运行良好。现在突然间我们得到

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

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

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

在删除所有历史记录后,当我在 chrome(非隐身)中打开应用程序时,我可以看到来自 Web 应用程序 url 的大约 160 多个 cookie。

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

即使我怀疑更多的声明属性可能会增加标题大小,但我已将声明属性减少到 3。 在此处输入图片说明

我也试过这个,但徒劳无功。

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

Ank*_*mar 5

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

原因: Owin Middle ware 存在一个众所周知的问题,即它没有设置身份验证 cookie,我们最终处于登录循环中。我使用的是旧版本的 OWIN。

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

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

老的:

app.UseCookieAuthentication(new CookieAuthenticationOptions{});
Run Code Online (Sandbox Code Playgroud)

新的:

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

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

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

希望这可以帮助其他人。
快乐编码。