Я получаю сообщение об ошибке браузера при использовании библиотеки 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.