Описание взаимодействия

Авторизация

По умолчанию в авторизации используется поток с кодом авторизации [Authorization Code flow].

  1. Клиент переадресовывает пользователя на сервер авторизации
  2. Пользователь вводит данные авторизации
  3. Сервер авторизации переадресует пользователя на указанную на этапе 1 страницу клиента. В GET-параметрах передается код авторизации (?code=...)
  4. Клиент выполняет запрос к серверу авторизации для обмена кода авторизации на Access Token

Верификация токена в конечной системе

  1. Пользователь выполняет запрос с Access Token
  2. Осуществляется проверка подписи Access Token (JWS)
  3. Выполняется расшифровка токена
  4. Из токена получается информация о пользователе

Проверка подписи токена

Проверка подписи токена подразумевает наличие на конечном сервере хранилища (кэша) ключей.
Обновление кэша активных ключей на сервере предлагается производить не чаще одного раза в час и не реже одного раза в сутки.
Получение ключей с сервера авторизации при каждом запросе к конечному серверу запрещено.

Предлагаемый алгоритм работы

  1. Расшифровка первой части JWT и получение информации об идентификаторе ключа (поле kid)
  2. Проверка наличия в кэше сервера ключа с данным идентификатором kid
  3. Если ключ существует, осуществляется проверка JWS с данным ключем