Unified Identity Management logo figure Unified Identity Management logo figure

Локальный выход (Logout)

Общие положения

  • Все параметры запросов и ответов, атрибуты пользователей и прочие параметры являются регистрозависимыми.

  • Все параметры запросов и ответов являются обязательными, если явно не указано обратное.

  • Переносы строк в некоторых примерах запросов добавлены для удобства чтения, реальная строка запроса должна быть без них.

  • При запросах к API, ошибки со статусом 503 всегда приходят в HTML.

Завершение сессии и инвалидация токенов

Инициирование завершения сессии и инвалидации токенов

Завершение сеанса на UIDM МОЖЕТ быть технически инициировано одним из двух способов: 1. Вызовом AJAX-эндпоинта 2. Переходом на URL выхода IMPORTANT: Следует использовать AJAX, если нет технических ограничений.

Вызов AJAX-эндпойнта

Внимание
Содержимое раздела может измениться

Выданный ранее токен может быть инвалидирован отправкой серверного запроса на соответствующий адрес UIDM. Подключаемый сервис должен поддержать ajax endpoint, выполняющий серверный запрос к UIDM. Дополнительная аутентификация для этого метода не требуется, достаточно передать действующий access token. Для этого нужно выполнить POST запрос на соответствующий URL UIDM с указанием access token пользователя.

 POST /sso/oauth2/revoke HTTP/1.1
 Host: sso.uidm.ru
 Content-Type: application/x-www-form-urlencoded
 Accept: application/json

 token=7bdaeacc-3d80-415c-920f-a7c30ca5e743&token_type_hint=access_token
  • <token> - токен для инвалидации

  • <token_type_hint> - тип токена, всегда access_token

Успешное завершение сессии

В случае успешной инвалидации пользовательской сессии, UIDM вернет следующий ответ с пустым телом:

 HTTP/1.1 200 OK
Неуспешное завершение сессии

В случае ошибки инвалидации пользовательской сессии, UIDM сообщит об ошибке в теле ответа с параметрами:

  • error - код ошибки согласно спецификации OAuth 2.0 Token Revocation RFC 7009 пункт 4.1.1

  • error_description - текстовое описание ошибки

 HTTP/1.1 400 Bad Request

 {
     "error_description": "Requested token type is not supported.",
     "error": "unsupported_token_type"
 }

Вызвать сценарий завершения сессии через редирект

Завершение сессии из UIDM может быть осуществлено переходом аутентифицированного пользователя на URL выхода. При этом UIDM завершит текущую сесиию пользователя и удалит все выданные в рамках данной сессии токены. Желательно добавить в URL параметр goto с адресом обратного перехода, на этот адрес пользователь будет перенаправлен сразу после выхода.

https://sso.uidm.ru/UI/Logout?goto=https://client.example.org
Завершение сессии

Пользователь будет перенаправлен на адрес, указанный в параметре goto

Вызов callback-URL при инвалидации токенов

При инвалидации токена клиента UIDM может выполнить запрос на URL подключаемого сервиса с оповещением о факте инвалидации. Список URL для оповещения регистрируется в опроснике в AUTHZ.15 и настраивается администратором UIDM при подключении сервиса. Внешняя система, получив такое оповещение, должна немедленно инвалидировать локальную сессию пользователя.

Важно
Недопустимо удаление атрибутов из локальной http-сессии вместо полной ее инвалидации.

Использование компонента OAuth2.0 Consumer

Компонент OAuth2.0 Consumer позволяет выполнить локальный выход из сессии при этом очистив содержимое кук с access_token и refresh_token.

Инициирование завершения сессии и инвалидации токенов

Существует два способа завершение сеанса UIDM через OAuth2.0 Consumer: 1. Вызовом AJAX-эндпоинта 2. С перенаправлением на URL выхода

Важно
Следует использовать AJAX, если нет технических ограничений.

Вызов AJAX-эндпойнта

Внимание
Содержимое раздела может измениться

Выданный ранее токен может быть инвалидирован отправкой серверного запроса на соответствующий адрес UIDM. Подключаемый сервис должен поддержать ajax endpoint, выполняющий серверный запрос к UIDM.

Запрос аутентифицируется через передачу Bearer токена, либо через куку аутентификции.

Пример вызова запроса на Logout с авторизацией через куки
GET /sso/oauth2-consumer/logout?revocation&client_id=<agent> HTTP/1.1
Host: sso.uidm.ru
Content-Type: application/x-www-form-urlencoded
Accept: application/json
Cookie: at=<access_token>; reft=<refresh_token>
  • <agent> - имя агента OAuth2, для которого был выдан access token, используется для определения имени кук с токена доступа (опционально)

  • <access_token> - токен для инвалидации

  • <refresh_token> - refresh токен (также будет инвалидирован)

Пример вызова запроса на Logout с авторизацией через токен в заголовке
GET /sso/oauth2-consumer/logout?revocation HTTP/1.1
Host: sso.uidm.ru
Content-Type: application/x-www-form-urlencoded
Authorization: Bearer sso_1.0_<access_token>
Accept: application/json
  • <access_token> - токен для инвалидации

Успешное завершение сессии

В случае успешной инвалидации пользовательской сессии, OAuth2 Consumer вернет следующий ответ с пустым телом. При этом, если запрос содержал куки at и/или reft (имена кук настраиваются для агента) - они будут сброшены.

HTTP/1.1 204 No Content
Set-Cookie: at=LOGOUT; Domain=sso.uidm.ru; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; Secure; HttpOnly
Set-Cookie: reft=LOGOUT; Domain=sso.uidm.ru; Expires=Thu, 01-Jan-1970 00:00:10 GMT; Path=/; Secure; HttpOnly

Вызвать сценарий завершения сессии через редирект

Чтобы завершить сессию с удалением авторизационных кук путем перехода по ссылке, без AJAX-запросов, OAuth2 Consumer позволяет выполнить запрос с последующим переходом на URL логаута SSO. При этом UIDM завершит текущую сесиию пользователя и удалит все выданные в рамках данной сессии токены и авторизационные куки. Желательно добавить в URL параметр goto с адресом обратного перехода, на этот адрес пользователь будет перенаправлен сразу после выхода.

https://sso.uidm.ru/sso/oauth2-consumer/logout?client_id=<agent>&redirect_uri=%2F..%2Fsso%2FUI%2FLogout%3Fgoto%3Dhttps%253A%252F%252Fsso.uidm.ru%252Flogin%26gotoOnFail%3Dhttps%253A%252F%252Fsso.uidm.ru%252Flogin
  • <agent> - имя агента OAuth2, для которого был выдан access token, используется для определения имени кук с токена доступа (опционально)

В параметре redirect_uri указывается URI запроса на Logout SSO, в котором, в свою очередь указываются параметры goto и gotoOnFail указывающие адрес куда будет перенаправлен пользователь при успешной и неуспешной завершении сессии. URL

Примечание
Значения параметров goto и gotoOnFail подвергаются двойному URL-кодированию.