400 Плохой заголовок запроса запроса или слишком большой файл cookie с использованием Sustainsys.Saml2

Я получаю сообщение об ошибке браузера при использовании библиотеки SustainSys.Saml2 с моим приложением:

400 Bad Request
Request Header Or Cookie Too Large
nginx/1.14.0

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

Я прочитал ответ на аналогичный вопрос (Заголовок длины запроса SustainSys.Saml2 слишком длинный) и искал информацию о том, как реализовать AcsCommandResultCreated для удаления неиспользуемых утверждений (и, надеюсь, уменьшения размера файлов cookie). Я не нашел много документации, но собрал воедино некоторые идеи и код, чтобы попытаться нанести удар.

Я пробовал этот код в своем global.asax, а также в действии контроллера (который я сделал returnUrl после Saml2 / Acs). Не похоже, что мой файл cookie FedAuth (установленный Saml2 / Acs) меньше. Есть комментарии или предложения? Спасибо.

// Check if email claim exists
var principal = ClaimsPrincipal.Current;
var userEmail = principal.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.Email)?.Value;

// Create new command result that only contains the email claim
if (userEmail != null)
{
      var emailClaim = principal.Claims.FirstOrDefault(claim => claim.Type == ClaimTypes.Email);
                
      Sustainsys.Saml2.Configuration.Options.FromConfiguration.Notifications.AcsCommandResultCreated =
      (commandResult, response) =>
      {
           var newCommandResult = new Sustainsys.Saml2.WebSso.CommandResult();
           newCommandResult.Principal.Claims.Append(emailClaim);
           commandResult = newCommandResult;
      };
}

ОБНОВЛЕНИЕ: оказалось, что тестовая среда, которую я использовал (в которой использовался nginx), требовала увеличения размера буфера заголовка запроса. Добавление этих файлов cookie увеличило размер примерно до 9500 байт, а nginx по умолчанию имеет размер буфера заголовка запроса, который меньше этого (я думаю, 8000). Обращение к владельцам кода тестового сервера, на котором запущен nginx, и увеличение этого значения решило мою проблему, без необходимости уменьшать размер файла cookie.


person hemac    schedule 06.03.2021    source источник


Ответы (1)


У вас много неудачных попыток аутентификации? Это может привести к тому, что в домене останется много корреляционных файлов cookie Saml2.XYZ. Попробуйте проверить инструменты разработчика браузера и очистить их.

Слишком большие заголовки обычно возникают, когда пользователь несколько раз пытался войти в систему, но эти файлы cookie застревают. Настоящая проблема обычно заключается в другом - из-за сбоя аутентификации и накопления этих корреляционных файлов cookie.

person Anders Abel    schedule 08.03.2021
comment
У меня не было неудачных попыток аутентификации. Дополнительная информация: я использую свое приложение в качестве прокси для внешнего приложения. Я использую IIS с расширениями Application Request Routing и URL Rewrite для перезаписи URL-адресов и передачи запросов из браузера во внешнее приложение. Я видел эту ошибку только при / logout и / refresh. Выполняя запросы к внешнему приложению напрямую (без моего прокси-приложения), конечная точка / logout отвечает с помощью Set-Cookie для пяти файлов cookie, чтобы истечь их. Так, может быть, библиотеке Sustainsys не нравится эта операция при прохождении через прокси? - person hemac; 09.03.2021