Описание взаимодействия
Авторизация
По умолчанию в авторизации используется поток с кодом авторизации [Authorization Code flow].
- Клиент переадресовывает пользователя на сервер авторизации
- Пользователь вводит данные авторизации
- Сервер авторизации переадресует пользователя на указанную на этапе 1 страницу клиента. В GET-параметрах передается код авторизации (
?code=...) - Клиент выполняет запрос к серверу авторизации для обмена кода авторизации на Access Token
Верификация токена в конечной системе
- Пользователь выполняет запрос с Access Token
- Осуществляется проверка подписи Access Token (JWS)
- Выполняется расшифровка токена
- Из токена получается информация о пользователе
Проверка подписи токена
Проверка подписи токена подразумевает наличие на конечном сервере хранилища (кэша) ключей.
Обновление кэша активных ключей на сервере предлагается производить не чаще одного раза в час и не реже одного раза в сутки.
Обновление кэша активных ключей на сервере предлагается производить не чаще одного раза в час и не реже одного раза в сутки.
Получение ключей с сервера авторизации при каждом запросе к конечному серверу запрещено.
Предлагаемый алгоритм работы
- Расшифровка первой части JWT и получение информации об идентификаторе ключа (поле
kid) - Проверка наличия в кэше сервера ключа с данным идентификатором
kid - Если ключ существует, осуществляется проверка JWS с данным ключем