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()
});
Ниже обсуждается тот же вопрос:
Надеюсь, что это помогает другим.
Удачного кодирования.