3.1.3. OAuth
В рамках сервиса также реализован авторизационный гейт на базе протокола OAuth 2.0.
Для начала работы с OAuth необходимо зарегистрировать приложение на стороне личного кабинета Такском-Касса и прописать ему права на доступ к авторизации с помощью OAuth. На данный момент эта операция производится вручную, по запросу интегратора. Необходимо связаться с разработчиками компании Такском и сообщить о своем желании использовать OAuth для авторизации в API.
Авторизация через авторизационный гейт OAuth происходит в два этапа.
1. Ссылка для пользователя для прохождения авторизации через OAuth:
HTTP-запрос:
HTTP-Method: GET
Адрес запроса (URI)
| |
https://auth-<server>.taxcom.ru/core/connect/authorize
| |
Параметры запроса
| |
client_id
|
Публичный идентификатор внешнего приложения, полученный при регистрации
|
response_type
|
Тип ответа, поддерживается значение «code»
|
scope
|
Набор прав доступа, требуемых приложению для работы. На данный момент реализуется единственное право – «api»
|
redirect_url
|
Адрес, на который будет совершено перенаправление после авторизации и подтверждения прав приложения пользователем
|
После перехода по ссылке абонент проходит авторизацию на сервисе и подтверждает полномочия приложения интегратора на доступ к его данным.
![](Pictures/drex_oauth_custom.png)
Финальным шагом этой операции будет редирект на адрес, указанный в первом пункте в параметре redirect_url. Одним из параметров запроса при редиректе будет:
Параметры запроса
| |
code
|
Одноразовый код для получения маркера доступа к API
|
2. При обработке редиректа со стороны сервера нужно сделать запрос, по которому, имея полученный при редиректе в качестве параметра код, можно получить маркер доступа к API.
HTTP-запрос:
HTTP-Method: POST
Адрес запроса (URI)
| |
https://<server>.taxcom.ru/core/connect/token
| |
Параметры запроса
| |
grant_type
|
Тип подтверждения прав, указывается значение “authorization_code”
|
code
|
Код, полученный от сервера на предыдущем шаге
|
redirect_uri
|
Адрес, на который было совершено перенаправление после авторизации, должен совпадать с путем из пункта 1.
|
Заголовок запроса
| |
Authorization:clientId:Secret
|
clientId = Публичный идентификатор внешнего приложения, полученный при регистрации
secret – закрытый ключ приложения, полученный при регистрации
Строка clientId:Secret конвертируется в Base64
|
Ответ
| |
{"access_token":"9eca5bce0a2a21aaff4b09901b92333a","expires_in":3600000,"token_type":"Bearer"}
|
Маркер, полученный в поле access_token, в дальнейшем используется в качестве маркера временного доступа при работе с API. Время жизни маркера можно оговаривать при регистрации, а также его можно продлять с помощью специального метода продления времени жизни маркера доступа.