Chrome сохраняет файлы cookie, несмотря на то, что срок их хранения на сервере истек - PullRequest
0 голосов
/ 08 июня 2018

Я столкнулся с этой проблемой, пытаясь очистить избыточные файлы 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);
        }
    }
}

Это не сработало из-за не столь очевидной причины.

1 Ответ

0 голосов
/ 08 июня 2018

В моей тестовой среде использовалась конечная точка http, хотя в Web.config также имелся этот параметр:

<httpCookies httpOnlyCookies="true" requireSSL="true" />

В этой строке веб-сервер настраивается для обеспечения безопасности всех файлов cookie, хотя я не использовалПривязка https.

Как уже упоминалось здесь , небезопасные сайты (http :) больше не могут устанавливать файлы cookie с директивой «secure» (впервые в Chrome 52+ и Firefox 52+) и, следовательно,мои запросы об истечении срока действия были проигнорированы браузером.

Решение будет состоять в том, чтобы либо изменить для параметра requireSSL значение false, либо использовать привязку https.

...