backchannel_logout

Back-Channel Logout сообщает приложению о завершении пользовательской сессии REGOS. REGOS выступает OpenID Provider и отправляет уведомление на backchannel_logout_uri, зарегистрированный у приложения. Приложение принимает запрос и завершает свою локальную сессию.

Это отдельный механизм от выхода через браузер. Для выхода, инициированного приложением, направляйте пользователя на /oauth/logout с id_token_hint. Не отправляйте ID token или access token на /oauth/backchannel_logout.

Что принимает приложение

REGOS отправляет HTTPS POST с типом application/x-www-form-urlencoded и параметром logout_token. Адрес в примере принадлежит приложению:

POST https://your.app/oidc/backchannel-logout
Content-Type: application/x-www-form-urlencoded

logout_token=eyJ...logout_token

Адрес должен быть доступен REGOS по сети. Native-приложению без доступного серверного endpoint не следует рассчитывать на этот механизм как на способ доставки уведомлений непосредственно устройству.

Проверка уведомления

До завершения локальной сессии приложение проверяет подпись JWT по ключам из jwks_uri, ожидаемый iss, свой client_id в aud, допустимую давность iat и уникальность jti. Токен должен содержать событие http://schemas.openid.net/event/backchannel-logout, идентификатор sid и/или sub и не должен содержать nonce. REGOS передаёт sid для завершения именно указанной сессии. Нельзя принимать обычный ID token или access token вместо logout token.

После успешной обработки приложение возвращает 200 OK. Повторное уведомление не должно восстанавливать сессию. При недоставке уведомления доступ всё равно определяется состоянием токенов и выбранной политикой их проверки; доставка не заменяет introspection.

При смене пароля REGOS сначала отзывает сессии и токены, затем отправляет уведомления приложениям, определённым до отзыва, включая приложения текущей сессии. Недоступность приложения не отменяет смену пароля; автоматической очереди повторной доставки нет.

Discovery публикует backchannel_logout_supported: true и backchannel_logout_session_supported: true. Отдельного входящего back-channel endpoint для приложений на REGOS нет. Прежний POST https://auth.regos.uz/oauth/backchannel_logout возвращает 410 Gone: старые интеграции необходимо перевести на описанное направление уведомлений или /oauth/logout.

Стандарт: OpenID Connect Back-Channel Logout 1.0.

Новые grants с подтверждённым offline_access имеют отдельный SID. Обычный выход
или переключение аккаунта в браузере не отправляет logout для этих сессий.
При явном завершении offline-сессии или изменениях безопасности уведомление
относится к её SID. Приложение должно завершать именно указанную сессию;
аккаунт в браузере не определяет автоматически активный аккаунт приложения.