Аутентификация по коду подтверждения
Для приложений с серверной частью можно получить Access Token с помощью authorization code flow.
Конечный пользователь использует свою учетную запись Контура для аутентификации и выдает разрешение на доступ к выбранным данным. После получения разрешений, приложение отправляет запрос в API Контур.Экстерна.
Алгоритм аутентификации
Аутентификация выполняется в два этапа:
Получение authorization code.
Получение Access Token.
Получение authorization code
Для получения authorization code отправьте запрос.
Метод: GET AuthorizationEndpoint.
Примечание
В документации Контур.API пока не реализован метод GET AuthorizationEndpoint. Рекомендуем использовать коллекцию Postman
для запросов.
Параметры запроса
Content-type: application/x-www-form-urlencoded
response_type
– ответ, который нужно получить от OpenID Провайдера. Укажите значение:code
;client_id
– сервисное имя, выдается вместе с api-key;scope
– область действия токена. Укажите следующие значения через пробел:openid extern.api
;redirect_uri
– ссылка, на которую будет перенаправлен конечный пользователь после аутентификации;nonce
– строка для удостоверения, что запрос связан с будущим Access Token. Данная строка вернется при получении Access Token.
Ответ
OpenID Провайдер перенаправит пользователя на адрес, указанный в параметре redirect_uri
, с кодом подтверждения code.
Подробнее про получение authoriztion code смотрите в документации OpenID Провайдера.
Пример запроса
http://identity.testkontur.ru/connect/authorize?
response_type=code
&scope=openid extern.api
&client_id=yourClientId
&redirect_uri=http://www.example.com/
&state=af0ifjsldkj
&nonce=n-0S6_WzA2Mj
Получение Access Token
Полученный код подтверждения нужно обменять на Access Token.
Метод: POST TokenEndpoint.
Параметры запроса
Content-type: application/x-www-form-urlencoded
grant_type
– тип аутентификации. Укажите значение:authorization_code
;code
– код подтверждения;client_id
– сервисное имя, выдается вместе с api-key;client_secret
– api-key;riderect_uri
– ссылка, на которую получен код подтверждения.
Ответ
OpenID Провайдер вернет в ответ Access Token.
Пример запроса
POST /token
Content-type: application/x-www-form-urlencoded
grant_type=authorization_code
code=SplxlOBeZQQYbYS6WxSbIA
client_id=yourClientId
client_secret=yourClientSecret
redirect_uri=http://www.example.com
Пример ответа
200 OK
Content-type: application/json
{
"access_token": "AAAAAAAAAAAAAAAAA",
"token_type": "Bearer",
"expires_in": 3600,
"id_token": "eyJhbGciOifQ.ewogI3pAKfQ.ggW8hq-rvKMzqg"
}