Я столкнулся с этой проблемой, пытаясь очистить избыточные файлы cookie OpenIdConnect.nonce.Эти файлы cookie автоматически добавляются промежуточным программным обеспечением OpenIdConnect, когда клиент пытается получить доступ к защищенному ресурсу (веб-службе).После установки cookie промежуточное программное обеспечение перенаправляет клиента в службу аутентификации, которая использует cookie для своих собственных целей безопасности.
Моя настоящая проблема заключалась в ошибке «Bad Request - Request Too Long», которую получали мои приемочные тесты, потому чтозапросы были заполнены десятками этих одноразовых файлов cookie.Это, в свою очередь, произошло из-за того, что мои тесты несколько раз пытались посещать некоторые защищенные ресурсы без надлежащей аутентификации.
Логическим решением (до исправления тестов) было удаление избыточных файлов cookie, установив для отметки времени истечения значение last:
private void ClearNonceCookies(AuthorizationContext filterContext)
{
// Clear nonce cookies to prevent the request from growing too big over time
foreach (var key in filterContext.HttpContext.Request.Cookies.AllKeys.Where(c => c.StartsWith("OpenIdConnect.nonce.")))
{
var cookie = filterContext.HttpContext.Response.Cookies[key];
if (cookie != null)
{
cookie.Expires = SystemTime.UtcNow.AddYears(-5);
filterContext.HttpContext.Response.Cookies.Set(cookie);
}
}
}
Это не сработало из-за не столь очевидной причины.