Azure AD B2C: неверный запрос - запрос слишком длинный HTTP-ошибка 400. Размер заголовков запроса слишком длинный. После входа

Я знаю, что подобный вопрос уже задавался ранее при переполнении стека, но у меня это не сработало. Пожалуйста, прочитайте весь вопрос, прежде чем отвечать / комментировать.

Я реализовал AD B2C в двух веб-приложениях, и до прошлой недели все работало нормально. Теперь вдруг мы получаем

Неверный запрос - запрос слишком длинный HTTP-ошибка 400. Размер заголовков запроса слишком длинный.

когда пользователь пытается войти на сайт. Так как мой сайт требует, чтобы каждый пользователь вошел в систему, он полностью заблокировал нас.

Мое веб-приложение также не работает в инкогнито / приватном окне. Браузер: Chrome, Firefox и Edge

Когда я открываю приложение в Chrome(не в режиме инкогнито) после удаления всей истории, я вижу, что в URL веб-приложения есть более 160 файлов cookie.

Да, слишком много куки, кажется, убивает мое веб-приложение, но это происходит даже после удаления всей истории браузера и в приватном просмотре тоже.

Даже я уменьшил атрибут утверждений до 3, подозревая, что большее количество атрибутов утверждений может увеличивать размер заголовка.

Я тоже пробовал это, но тщетно.

Итог: удаление файлов cookie и уменьшение количества претензий у нас не работают, и мы заблокированы. Заранее спасибо.

1 ответ

Решение

Я получил это исправлено после сбора билетов в службу поддержки Microsoft.

Причина: Существует хорошо известная проблема с программным обеспечением Owin Middle, когда он не устанавливает 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

Надеюсь, что это помогает другим.
Удачного кодирования.

Другие вопросы по тегам