logout
[GET] или [POST] /oauth/logout
Метод завершает сессию, связанную с OpenID Connect токеном. Его используют, когда приложение хочет выполнить единый выход пользователя через REGOS, а не только удалить токены в своем браузере или backend.
Главный параметр — id_token_hint. Это id_token, который приложение получило при входе пользователя. По нему REGOS понимает, какую пользовательскую сессию нужно завершить.
Пример GET-запроса:
https://auth.regos.uz/oauth/logout?id_token_hint=eyJ...id_token&post_logout_redirect_uri=https%3A%2F%2Fyour.app%2Flogged-out&state=random_state
Пример POST-запроса:
curl -X POST https://auth.regos.uz/oauth/logout \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "id_token_hint=eyJ...id_token" \
-d "post_logout_redirect_uri=https%3A%2F%2Fyour.app%2Flogged-out" \
-d "state=random_state"
Параметры:
| Название | Обязательность | Описание |
|---|---|---|
id_token_hint |
Да | ID token пользователя, полученный при входе. |
post_logout_redirect_uri |
Нет | Адрес возврата после выхода. Должен точно совпадать с одним из зарегистрированных для клиента адресов выхода. |
state |
Нет | Значение, которое REGOS добавит к redirect после выхода. |
Если post_logout_redirect_uri указан, REGOS перенаправит пользователя на него. Если state тоже указан, он будет возвращен без изменений. Если redirect не указан, сервер вернет простой успешный ответ.
REGOS принимает выданный им ID token, связанный с сессией и клиентом. Обычный access token или logout token для id_token_hint не подходит. Если в браузере открыта другая сессия, запрос отклоняется, чтобы не завершать чужой вход. Запрос с незарегистрированным адресом возврата возвращает invalid_request до выполнения выхода.
Истечение срока ID token не мешает использовать его как id_token_hint, пока связанная сессия активна и принадлежит тому же пользователю. Это исключение относится только к выходу: истёкший ID token нельзя принимать как действующее подтверждение входа. Для отсутствующей или завершённой сессии запрос возвращает invalid_request.
При успешном выходе сессия REGOS завершается, обновление её токенов прекращается, а приложениям с зарегистрированным back-channel адресом отправляется уведомление. Для текущей браузерной сессии удаляется cookie входа. Если запрос выполнен backend-приложением, cookie в браузере таким запросом удалить нельзя, но серверная сессия уже недействительна. Приложение также должно удалить собственные локальные токены и сессию.
Opaque access tokens завершённой сессии становятся неактивными при проверке через introspection. При сбоях инвалидирования кэша задержка на стороне REGOS может достигать 30 секунд; учитывайте и собственный кэш API. Повторный запрос с уже отозванным ID token может вернуть invalid_request; это не восстанавливает сессию.
Описание механизма: OpenID Connect RP-Initiated Logout.
Независимый offline-доступ
Обычный выход из REGOS Auth сохраняет новые сессии приложения, выданные после
подтверждения offline_access. Явный вызов /oauth/logout с ID token такой сессии
завершает её. Если в браузере есть активная сессия, допускается только исходная
браузерная сессия этого grant; другая сессия или другой аккаунт дают invalid_request.
Для выхода только из аккаунта приложения используйте /oauth/revoke с refresh token.