Перейти к основному содержимому

Авторизация OpenID Connect (OAuth2)

к сведению

Данная инструкция применима к: Ключник API КС3.

Введение

Ключник поддерживает авторизацию по стандарту OpenID Connect 1.0 и реализует следующие flow:

Для работы с API необходимо использовать Password Credentials Flow.

Предварительная настройка

Перед авторизацией необходимо завести нового клиента в разделе настроек SSO приложения:

Список SSO приложений

В настройках нового SSO приложения необходимо указать:

  • уникальный идентификатор клиента
  • наименование
  • URL обратного вызова в случае использования Authorization Code Flow. В случае использования Password Credentials Flow можно указать любой URL, он не будет использоваться
  • для Password Credentials Flow убрать галочку Конфиденциально (с включенной опцией необходимо в запросах передавать client_secret)
  • опционально время жизни токена авторизации в секундах
Добавление нового SSO приложения

Авторизация (Password Credentials Flow)

Процесс авторизации и работы с API:

  • запрос токена доступа (access_token) и токена обновления (refresh_token)
  • выполнение запросов к API Ключника с использованием полученного access_token
  • в случае истечения времени жизни access_token его необходимо обновить используя refresh_token.

Запрос токена доступа

Для получения токена доступа выполняется следующий запрос:

curl -X POST https://<домен Ключника>/auth/oauth/token \
-d "grant_type=password" \
-d "username=<логин пользователя>" \
-d "password=<пароль пользователя>" \
-d "client_id=<идентификатор клиента>"

Необходимо подставить правильные параметры в места обозначенные <...>.

В ответе возвращается JSON следующего вида:

{
"access_token": "eyJ0eXAiOiJKV1QiLCJhbGc......MjJwFUWq3Xg8kBhKdeeZwCQjrRYXtjyNT5OYnEmiYRV8MZZOM1g",
"token_type": "Bearer",
"expires_in": 604800,
"refresh_token": "7TVOwKw6_Si4vXIl6tafyMGDJtm0sfAoE0i2Ixd-fOM",
"scope": "openid email profile dss",
"created_at": 1772097905
}
  • access_token - токен доступа
  • expires_in - время жизни access_token в секундах
  • refresh_token - токен обновления

Следует сохранить эти данные в БД, для переиспользования в последующих запросах к API.

Выполнение запроса к API

При выполнении запросов к API необходимо указывать access_token в заголовке Authorization:

curl -X 'GET' \
'https://<домен Ключника>/api/v3/key_containers?from=0&limit=10' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <access_token>'

Необходимо подставить правильные параметры в места обозначенные <...>.

В случае истечения времени жизни токена доступа (access_token), будет возвращена ошибка 403 Forbidden. В этом случае необходимо обновить токен доступа (access_token).

Обновление токена доступа

По истечении времени жизни токена доступа (access_token) его необходимо обновлять используя полученный ранее токен обновления (refresh_token).

curl -X POST https://<домен Ключника>/auth/oauth/token \
-d "grant_type=refresh_token" \
-d "refresh_token=<токен обновления>" \
-d "client_id=<идентификатор клиента>"

Необходимо подставить правильные параметры в места обозначенные <...>.

В ответе возвращается JSON аналогичный ответу на запрос получения токена доступа, в котором возвращается новый токен доступа и новый токен обновления.