Авторизация OpenID Connect (OAuth2)
Данная инструкция применима к: Ключник API КС3.
Введение
Ключник поддерживает авторизацию по стандарту OpenID Connect 1.0 и реализует следующие flow:
Для работы с API необходимо использовать Password Credentials Flow.
Предварительная настройка
Перед авторизацией необходимо завести нового клиента в разделе настроек SSO приложения:

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

Авторизация (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 аналогичный ответу на запрос получения токена доступа, в котором возвращается новый токен доступа и новый токен обновления.