Аутентификация в SOAP-сервисах приложения для неинтерактивных пользователей
Если пользователь представляет собой не человека, а внешнюю информационную систему, то для аутентификации используются токены доступа. Например, внешняя программа вызывает SOAP-сервис, существующий в приложении.
Чтобы предоставить права на ресурсы приложения внешней программе, нужно установить связь между внешней программой и пользователем приложения. В большинстве случаев мы рекомендуем создавать отдельных служебных пользователей для внешних программ.
Пусть в приложении есть SOAP-сервис и пользователь, обладающий правом вызова этого сервиса.
Сначала, один раз, необходимо в приложении получить ключ доступа для этого пользователя.
После этого при каждом вызове SOAP-сервиса внешняя программа должна отправить запрос на получение токена аутентификации по адресу:
http://serverhost:port/applications/{app}/sys/token
Получение токена выполняется с проверкой прав работы пользователя в приложении с помощью токенов.
Формат запроса для получения токена:
POST <URL>
Content-Type: application/x-www-form-urlencoded
Authorization: Basic <Base64(ClientId:ClientSecret)>
grant_type=CLIENT_CREDENTIALS
На встроенном языке этот же запрос может выглядеть следующим образом:
исп Ответ = КлиентHttp.ЗапросPost(<URL>)
.ДобавитьЗаголовок("Content-Type", "application/x-www-form-urlencoded")
.ДобавитьЗаголовок("Authorization", "Basic " + Кодировка.Base64.КодироватьВСтроку("N1_e1NvnB33xjB7IrZCqJT2WHOyR0Ew58vedLLQxXwE=:zd9QHBC_D9Jmurubko7xB97eJqCAQjJk5lNYp7Ny4s4="))
.УстановитьТело("grant_type=CLIENT_CREDENTIALS")
.Выполнить()
В случае успешного получения токена внешняя программа получит ответ в формате JSON:
{
"id_token": "<сериализованный токен аутентификации>",
"token_type": "Bearer"
}
После того как токен получен, можно вызывать SOAP-сервис из приложения. Для этого в запрос нужно добавить заголовок Authorization:
Authorization: Bearer <токен, полученный от менеджера аутентификации>
Токен действителен в течение часа, поэтому если нужно сделать сразу несколько вызовов (возможно разных сервисов), то можно использовать уже полученный токен, не получая его заново.
Если токен устарел, то при вызове SOAP-сервиса вернется ответ с кодом 401. Это значит, что нужно снова запросить токен аутентификации.