Я разработал стратегию единого входа для входа в систему / выхода из системы / обновления для нескольких доменов с помощью токенов JWT.Управление единым входом осуществляется через встроенные фреймы postMessage, как описано здесь: Поток единого входа с использованием JWT для междоменной аутентификации
Проблема, с которой я столкнулся, заключается в том, что у пользователя отключены сторонние файлы cookie в его браузере.
Тогда метод postMessage с iframe больше не работает:
- При передаче сообщения сверху вниз (установка cookie внутри iframe), оно завершается неудачей
- При передаче сообщения снизу вверх (чтение файла cookie внутри iframe) оно также завершается сбоем
Поэтому мне необходимо разработать резервный рабочий процесс для всех пользователей с отключенными сторонними файлами cookie.
Работает следующим образом:
- Пользователь регистрируется на сервере авторизации
- На сервере аутентификации устанавливается cookie-файл
- Пользователь перенаправляется обратно на страницу Aи еще один файл cookie (с тем же содержимым) находится там
- Пользователь заходит на страницу B и хочет войти туда
- Пользователь перенаправляется на сервер авторизации.Файл cookie распознается, и пользователь перенаправляется обратно на страницу B, и другой файл cookie (с тем же содержимым) устанавливается
- Все 3 файла cookie теперь "синхронизированы"
- Проблема возникает, когда пользовательобновляет свой токен на странице B.затем он не может обновить его снова на странице A, и он должен снова войти в систему на странице A
- Поскольку TTL маркера доступа очень короткий, это очень плохой опыт
MyВывод: если пользователь отключил сторонние файлы cookie, удалите весь SSO.Пользователь просто должен войти в систему на каждой странице.
Я прав или я что-то упускаю?