Есть ли способ применить атрибут SameSite к cookie .AspNetCore.Correlation?

После недавних изменений в Chrome 80, теперь требуется указать SameSite=None для файлов cookie, которые необходимо отправлять на разные сайты.

Я обнаружил проблему с моим сайтом Asp.Net Core, когда он размещен во фрейме на другом сайте. Аутентификация WS-Federation в настоящее время не работает, поскольку атрибут SameSite=None отсутствует в файле cookie .AspNetCore.Correlation:

Set-Cookie: .AspNetCore.Correlation.WsFederation.qG-dtdsIcVBHSRW4SpPpqpMYMrueIrLfWLvElKrbyXg=N; expires=Fri, 17 Jan 2020 09:17:08 GMT; path=/signin-wsfed; secure; httponly

Я нашел способ добавить SameSite=None в файл cookie с помощью По промежуточного слоя для политики файлов cookie:

app.UseCookiePolicy(new CookiePolicyOptions()
{
    MinimumSameSitePolicy = SameSiteMode.None
});

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


person Gyum Fox    schedule 17.01.2020    source источник


Ответы (1)


Когда вы определяете схему аутентификации, вы можете изменить настройки корреляционного файла cookie. Например.:

.AddWsFederation(o =>
{
    o.CorrelationCookie.SameSite = Microsoft.AspNetCore.Http.SameSiteMode.Lax;
})

Примечание от OP:

Помните, что вам необходимо установить .NET Core November 2019 Update на ваш сервер, чтобы это работало (иначе атрибут SameSite не выдается). См. эту статью < / а>.

person juunas    schedule 17.01.2020