OpenID Connect Session Management
Обзор возможностей
Модуль OpenID Connect Session Management позволяет отслеживать состояние пользовательской сессии через OpenID Connect (OIDC) и OAuth2 и синхронизировать состояние авторизации между вашим приложением и OIDC-провайдером.
Модуль автоматически определяет, что пользователь:
-
Вошёл в систему.
-
Вышел из системы.
-
Сменил аккаунт.
Зачем это нужно:
Когда пользователь входит в ваше приложение через Softline ID, его сессия живёт в двух местах:
- в вашем приложении — вы знаете, что он авторизован;
- у провайдера (Softline ID) — он тоже знает, что пользователь вошёл.
Проблема в том, что эти две сессии не синхронизированы. Если пользователь:
- нажмёт «Выйти» в другом приложении;
- сменит аккаунт;
- дождётся истечения сессии у провайдера,
— ваше приложение об этом не узнает. Пользователь останется «авторизованным» у вас, хотя у провайдера он уже вышел.
Модуль OpenID Connect Session Management решает эту проблему: он отслеживает состояние сессии у провайдера и сообщает вашему приложению, когда что-то изменилось.
Как выглядит работа модуля для пользователя:
- Пользователь вошёл в ваше приложение — сессия активна.
- Пользователь вышел из Softline ID в другой вкладке — ваше приложение автоматически разлогинивает его.
- Пользователь сменил аккаунт — ваше приложение переавторизует его под новым аккаунтом.
Никаких «зависших» сессий и рассинхронизации.
Как это работает
Модуль использует два iframe:
| Компонент | Назначение |
| OP iframe | Загружается со стороны OIDC-провайдера. Проверяет, активна ли сессия пользователя у провайдера. |
| RP iframe | Загружается с вашей стороны. Периодически спрашивает OP iframe: «сессия ещё жива?» — и, если что-то изменилось, отправляет событие в ваше приложение. |
Общение между iframe и приложением идёт через postMessage — стандартный механизм браузера для передачи сообщений между окнами.
Важно: ваше клиентское приложение должно быть размещено на поддомене softline.ru — то есть в том же сайте (same-site), что и login.softline.ru. Поддомены softline.com не подходят, они будут рассматриваться браузером, как сторонние (third-party), из-за чего cookies провайдера не будут передаваться.
Компоненты
OP iframe (OpenID Provider iframe)
Встроенный iframe, предоставляемый OIDC-провайдером для проверки состояния сессии.
Особенности:
-
Работает как «чёрный ящик».
-
Не требует модификации.
-
Достаточно встроить его в страницу.
Пример подключения:
<iframe
id="op-iframe"
src="https://login.softline.ru/openid/check_session_iframe"
style="display:none">
</iframe>RP iframe (Relying Party iframe)
Отдельный iframe, который:
- Периодически проверяет состояние сессии через OP iframe.
- Отправляет уведомления в приложение через postMessage.
Размещается внутри вашего приложения. Поставляется готовым файлом rp-iframe.html.
Краткое резюме
Что нужно интегрировать:
| Компонент | Обязательность |
| OP iframe | ✔️ |
| RP iframe | ✔️ |
| HTTP-заголовки | ✔️ |
| Обработчик postMessage | ✔️ |
| OAuth2 callback | ✔️ |
Минимальный flow:
- Пользователь авторизуется.
- Приложение получает session_state.
- Создаётся RP iframe.
- RP iframe проверяет сессию.
- При изменении сессии выполняется повторная авторизация.
Важно: ваше клиентское приложение должно быть размещено на поддомене softline.ru — то есть в том же сайте (same-site), что и login.softline.ru. Поддомены softline.com не подходят, они будут рассматриваться браузером, как сторонние (third-party), из-за чего cookies провайдера не будут передаваться.