Жизненные циклы токенов
Токены выпускаются (создаются) сервером, передаются клиентам в ответ на запросы авторизации, и содержат необходимую и актуальную информацию для последующей авторизации действий пользователя при помощи такого токена.
Передача (предъявление) токена клиентом в составе запроса к серверу означает, что клиент желает подтвердить своё право на выполнение запрашиваемой операции или обращение к защищаемому ресурсу.
В RooX UIDM используются токены, представленные в двух форматах: GUID (он же opaque) и JWT.
- GUID
-
Токен представляет из себя уникальный идентификатор в формате GUID. Вся связанная с токеном информация хранится в RooX UIDM.
- JSON Web Token (JWT, RFC 7519)
-
JWT — формат контейнера для передачи данных. RooX UIDM поддерживает токены формата JWT в двух вариантах: JWS (RFC 7515) и JWE (RFC 7516).
Токен формата JWT (далее — токен) представляет из себя последовательность из трёх (JWS) или пяти (JWE) текстовых строк в формате JSON, каждая из которых закодирована алгоритмом Base64URL, и которые разделены точками.
Вариант токена (JWS или JWE) определяется содержимым заголовка токена (Javascript Object Signing and Encryption, JOSE).
- JSON Web Signature (JWS)
-
JWS — это токен формата JWT, в котором тело токена не зашифровано, но токен подписан цифровой подписью.
Если заголовок токена соответствует формату JWS, то токен состоит из трёх секций:
-
заголовка (JOSE Header), в котором содержатся метаданные токена, и указание на криптографические алгоритмы, использованные при его подписании;
-
тела, содержащего в себе JSON c набором клеймов — утверждений, которые могут включать в себя информацию о личности пользователя, разрешенных доступах и т. д.;
-
подписи (сигнатуры), которая подтверждает, что токен не был изменен (не подделан) и ему можно доверять. При использовании токена перед его использованием или сохранением подпись проверяется в обязательном порядке.
-
- JSON Web Encryption (JWE)
-
JWE — это токен формата JWT, в котором тело токена зашифровано.
Если заголовок токена соответствует формату JWE, то токен состоит из пяти секций:
-
заголовка;
-
ключа шифрования;
-
вектора инициализации;
-
зашифрованного текста (тела токена), который вычисляется с использованием ключа шифрования, вектора инициализации и алгоритма шифрования, определенного в заголовке токена;
-
данных, которые подтверждают целостность зашифрованных данных.
-
В тело токена могут включаться произвольные данные, необходимые серверу для авторизации тех или иных операций. Такие данные (поля JSON) называются клеймами (claim).
Если в соответствии с требованиями содержимое токена должно быть закрыт от третьих лиц, тело JWE-токена шифруется на стороне сервера, и не может быть расшифровано на стороне клиента или третьего лица, не обладающих ключом (секретом). Дополнительные сведения (клеймы) могут быть включены в JWS- или JWE-токен только самим сервером, который при необходимости включения в клеймы токена дополнительных сведений создаёт новый токен с дополнительными данными, подписывает или шифрует его и передаёт запрашивающей стороне.
Жизненный цикл токена
Жизненным циклом токена называется период действительности токена и его пригодности для авторизации действий пользователя.
Жизненный цикл токена начинается от момента его выпуска (создания его сервером и передачи запрашивающей стороне) и заканчивается в момент его аннулирования (истечения срока его действия или отзыва).
Виды токенов
Токен доступа (access token)
-
токены доступа.
-
при открытии аутентификационной сессии;
-
после использования токена обновления.
-
по истечении срока действия этого токена;
-
по истечении срока действия аутентификационной сессии;
-
при смене логина или пароля пользователя (аннулируются все токены доступа, кроме того, с использованием которого вызвана операция смены пароля);
-
при отзыве токена с использованием API;
-
при локальном выходе пользователя (logout);
-
при блокировке или удалении учётной записи пользователя.
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
Выпуск |
Выход пользователя (logout) |
Аннулирование |
Удаление или блокировка учётной записи пользователя |
Аннулирование |
Смена логина или пароля пользователя |
Аннулирование[1] |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
Аннулирование |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
Выпуск |
Совершение операции с использованием токена |
— |
Вызов специального API для получения экземпляра токена |
— |
Срок действия токена доступа рекомендуется настроить в диапазоне от нескольких минут до часов.
Токен обновления доступа (refresh token)
-
одновременно с выпуском токена доступа.
-
по истечении срока действия этого токена;
-
по истечении срока действия аутентификационной сессии;
-
при смене логина или пароля пользователя (аннулируются все токены обновления, кроме того, который выдавался вместе с текущим токеном доступа);
-
при отзыве токена с использованием API
-
при локальном выходе пользователя (logout);
-
при блокировке или удалении учётной записи пользователя.
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
Выпуск |
Выход пользователя (logout) |
Аннулирование |
Удаление или блокировка учётной записи пользователя |
Аннулирование |
Смена логина или пароля пользователя |
Аннулирование[2] |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
Аннулирование |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
Выпуск |
Совершение операции с использованием токена |
— |
Вызов специального API для получения экземпляра токена |
— |
Срок действия токена обновления доступа рекомендуется настроить заметно бóльшим, чем время жизни токена доступа. От разницы в настройке времени жизни токена обновления и токена доступа зависит время, в течение которого сервис сможет обновить доступ без выполнения пользователем повторной аутентификации.
Запрос на обновление токена доступа с помощью токена обновления доступа выполняется без дополнительной аутентификации пользователя.
Токен автоматического входа
-
токены восстановления сессии.
-
при открытии аутентификационной сессии.
-
при отзыве токена с использованием API;
-
по истечении срока действия этого токена.
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
Выпуск |
Выход пользователя (logout) |
— |
Удаление или блокировка учётной записи пользователя |
[3] |
Смена логина или пароля пользователя |
— |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
— |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
Выпуск |
Совершение операции с использованием токена |
— |
Вызов специального API для получения экземпляра токена |
— |
Токен автоматического входа не сохраняется на сервере RooX UIDM.
Срок действия токена автоматического входа настраивается и может составлять до нескольких месяцев.
Токен одноразового доступа (per operation access token)
-
токены доступа.
-
после прохождения пользователем аутентификации способом, установленном для этой операции или для операции с отдельными параметрами.
-
немедленно после совершения операции;
-
по истечении срока действия этого токена;
-
по истечении срока действия аутентификационной сессии;
-
при отзыве токена с использованием API;
-
при локальном выходе пользователя (logout);
-
при блокировке или удалении учётной записи пользователя.
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
Выпуск[4] |
Выход пользователя (logout) |
Аннулирование |
Удаление или блокировка учётной записи пользователя |
Аннулирование |
Смена логина или пароля пользователя |
Аннулирование |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
Аннулирование |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
— |
Совершение операции с использованием токена |
Аннулирование |
Вызов специального API для получения экземпляра токена |
— |
Токен доступа к API (API token)
-
токены доступа.
-
при вызове специального RooX UIDM API.
-
при отзыве токена с использованием API;
-
по истечении срока действия этого токена.
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
— |
Выход пользователя (logout) |
— |
Удаление или блокировка учётной записи пользователя |
—[5] |
Смена логина или пароля пользователя |
— |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
— |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
— |
Совершение операции с использованием токена |
— |
Вызов специального API для получения экземпляра токена |
Выпуск |
Системный токен доступа
-
токены доступа.
-
по запросу сервиса к RooX UIDM API.
-
по истечении срока действия этого токена;
-
при отзыве токена с использованием API.
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
Выпуск |
Выход пользователя (logout) |
Аннулирование |
Удаление или блокировка учётной записи пользователя |
Аннулирование |
Смена логина или пароля пользователя |
— |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
Аннулирование |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
Выпуск |
Совершение операции с использованием токена |
— |
Вызов специального API для получения экземпляра токена |
— |
Мультиплатформенный токен
-
сессионные токены.
-
при открытии аутентификационной сессии (m2m, AJAX).
-
по истечении срока действия этого токена (срок действия MPT-токена равен сроку действия токена доступа);
-
при локальном выходе пользователя (logout);
-
при смене логина или пароля пользователя;
-
при блокировке или удалении учётной записи пользователя.
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
Выпуск |
Выход пользователя (logout) |
Аннулирование |
Удаление или блокировка учётной записи пользователя |
Аннулирование |
Смена логина или пароля пользователя |
Аннулирование |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
Аннулирование |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
— |
Совершение операции с использованием токена |
— |
Вызов специального API для получения экземпляра токена |
— |
SSO-токен
Предупреждение
|
SSO-token является технически устаревшим и будет удалён в будущих версиях RooX UIDM. |
-
сессионные токены.
-
при открытии аутентификационной сессии (только по login-протоколу).
-
при локальном выходе пользователя (logout);
-
при смене логина или пароля пользователя;
-
при блокировке или удалении учётной записи пользователя.
-
при использовании (выполнении SSO-перехода).
Событие | Статус токена |
---|---|
Открытие аутентификационной сессии |
Выпуск |
Выход пользователя (logout) |
Аннулирование |
Удаление или блокировка учётной записи пользователя |
Аннулирование |
Смена логина или пароля пользователя |
Аннулирование |
Истечение срока действия токена |
Аннулирование |
Истечение срока действия сессии |
Аннулирование |
Отзыв токена с использованием API |
Аннулирование |
Использование токена обновления |
— |
Совершение операции с использованием токена |
— |
Вызов специального API для получения экземпляра токена |
— |
Обмен токенов
Механизм обмена токенов (token exchange) позволяет приложению обменять токен доступа с одним набором атрибутов на другой токен доступа с другим набором атрибутов без повторной аутентификации пользователя.
Такой механизм может быть использован в том числе:
-
для вызова одним сервисом, использующим RooX UIDM, API другого сервиса, также использующего RooX UIDM;
-
для разделения объема полномочий приложения на несколько отдельных токенов доступа и передачи их другим приложениям.
Важно
|
Срок действия токена, полученного в результате операции по обмену токена, определяется настройками RooX UIDM и не зависит от срока действия исходного токена. |