Один и тот же сайт cookie = ни одна настройка не теряется

#asp.net #asp.net-mvc #cookies #iframe #samesite

#asp.net #asp.net-mvc #файлы cookie #iframe #тот же сайт

Вопрос:

У нас есть ASP.NET Веб-сайт на основе. У нас есть требование запускать сайт в iframe третьей стороны. Различные части сайта недавно перестали работать в этом сценарии iframe, и мы сузили его до использования пользователем Chrome и AspNet.ApplicationCookie, а также пары пользовательских файлов cookie, недоступных в iframe (никаких проблем, возникающих за пределами iframe).

Сайт использует аутентификацию OWIN, поэтому я смог перейти на ASP.NET 4.8 и пакеты OWIN Nu&et. Это позволило мне установить CookieSameSite свойство в CookieAuthenticationOptions из IAppBuilder . После этого я вижу, что AspNet.ApplicationCookie был помечен как безопасный, а SameSite = None. Идеальный.

Однако для пользовательских файлов cookie я не могу заставить работать настройку SameSite. Код для создания cookie:

 HttpContext.Current.Response.SetCookie(new HttpCookie(key, value)
{
    Expires = expiration,
    SameSite = SameSiteMode.None,
    Secure = true
});
  

Эти файлы cookie работают вне iframe. Используя инструменты разработки Chrome и Firefox, я вижу, что они помечены как безопасные, но параметр SameSite не установлен (в частности, отображается «неуказанный» в инструментах разработки Firefox), поэтому они по-прежнему недоступны при запуске в iframe.

Некоторые связанные вещи:

  • Мы установили последнюю версию .net framework 4.8, поэтому я не думаю, что нам нужно устанавливать какие-либо исправления на сервер для поддержки SameSite.
  • Локально настройки cookies выглядят корректно. Я вижу файлы cookie, помеченные как безопасные, и SameSite = None. Однако это не удается при настройке сервера с балансировкой нагрузки (2 сервера Windows 2016 за балансировщиком нагрузки).
  • Используя chrome://fla&s /, я могу установить для SameSite by default cookies значение Disabled, и все работает, как ожидалось, в iframe. (Я думаю, это просто подтверждает, что проблема действительно в SameSite).
  • Я также пытался установить параметр SameSite с помощью confi&, но безрезультатно: <httpCookies requireSSL="true" sameSite="None" /&&t;

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

ОБНОВЛЕНИЕ — 17.08.2020

Я не приблизился к объяснению этого. Кое-что, что действительно работает для меня, — это использовать исходящую перезапись IIS для добавления «Secure; SameSite = None;» ко всем файлам cookie — это, казалось, было распространенным способом решения этой проблемы до обновлений 4.7.2 и 4.8.

Перезапись гарантирует, что SameSite и Secure будут установлены так, как ожидалось. Для меня это исключает балансировку нагрузки, каким-либо образом влияющую на файлы cookie.

Если я прав, остается только проблема с кодом, но, чувак, это кажется довольно простым.