#cookies #iframe #chromium #jsessionid #samesite
Вопрос:
У меня есть веб-приложение Java, развернутое в weblogic, в котором chrome заблокировал файл cookie JSESSIONID, поскольку «Схема того же сайта» из Chromium стала по умолчанию в версии 92.
Мое веб-приложение находится в Iframe с сайта, который находится в другом домене, но в том же поддомене. Первые страницы моего веб-приложения находятся в http, а затем отправляют сообщение в другой домен, который находится в https. В этот момент JSESSION заблокирован. Поэтому, когда поток возвращается в мое веб-приложение (эти страницы уже находятся в https), идентификатор JESSIONID остается заблокированным.
Ниже приведена некоторая информация, иллюстрирующая сценарий:
- Сайт, содержащий iframe: http://xxx.mydomain.com
- Мое веб-приложение в Iframe: http://yyy.mydomain.com
- IAM (аутентификация): https://zzx.mydomain.com
Поток выглядит следующим образом
- Я получаю доступ http://xxx.mycompany.com
- Iframe внутри него для доступа к моему приложению http://yyy.mydomain.com
- Я создаю JSESSIONID
- Я делаю СООБЩЕНИЕ, чтобы https://zzx.mydomain.com
- В этот момент chrome блокирует мой файл cookie JSESSIONID
- IAM перенаправляет на https://yyy.mydomain.com
- JSESSIONID остается заблокированным
Ниже на скриншоте файл cookie на шаге 3
Ниже на скриншоте файл cookie на шаге 5
Примечание: если я выполняю тот же поток, но без Iframe, это означает, что прямой доступ к URL-адресу на шаге 2 файл cookie не заблокирован:
Я попытался выполнить следующие действия
- https://www.chromium.org/updates/schemeful-same-site/schemeful-same-site-devtools-issues
- https://github.com/GoogleChromeLabs/samesite-examples/files/6655735/Document.2637652.1.pdf
Я установил в apache конфигурацию ниже. Это не сработало, единственный эффект, который это дало, — разрешить создать новый файл cookie JSESSIONID после его перенаправления на шаг 6. Но этого недостаточно, мне нужен один и тот же файл cookie с шага 1 до шага 6.
# It was set only in the https
Header edit Set-Cookie ^(JSESSIONID.*)$ $1;SameSite=None;Secure