Аутентификация

Аутентификация в сервисе SmartSpeech осуществляется через Access Token. Для вызова API используется протокол авторизации OAuth 2.0: для запроса API нужно получить токен (access_token). SmartMarket API обеспечивает защиту от несанкционированного доступа к API. Перед подключением проводятся проверки:

  • проверка наличия действующей подписки у приложения, которое инициирует вызов,
  • проверка сессии токена,
  • проверка запроса и ответа на соответствие схемам API.

Чтобы подключить API:

  1. Получите Client ID и Client Secret для вашего приложения.
  2. Добавьте сценарий получения access token в сервис для вызова API.
  3. Используйте access token для отправки запросов в сервис SmartSpeech.

Шаг 1. Получите Client Id и Client Secret

Токен имеет срок действия не более 10 минут. Сервис аутентификации в открытом виде передает срок окончания действия токена. Полученный токен включает в себя срок действия в отдельном поле.

Запрос доступа

Чтобы получить Client ID и Client Secret:

  1. Создайте проект SmartService в корпоративном пространстве SmartMarket Studio.
  2. Отправьте проект на модерацию.

Генерация Client Secret

В карточке с доступами отображается раздел со следующими контролами:

  • scope — отображается список сервисов, к которым открыт доступ (SMART_PUSH, SBER_SPEECH). Выберите SBER_SPEECH;
  • client_id — значение отображается всегда;
  • client_secret — заполняется после нажатия кнопки Сгенерировать новый Client Secret.

Нажмите кнопку Сгенерировать новый Client Secret. На форме в соответствующих контролях отобразятся значения атрибутов. Скопируйте значения Client ID и Client Secret и используйте для дальнейшей работы с API SmartSpeech.

Шаг 2. Добавьте access token в сервис API

На этом шаге необходимо добавить сценарий получения access token в сервис вызова API.

Формат запроса

Параметры запроса

Поле Описание

authorization

Обязательное

Авторизационные данные. Значения client id и client secret, закодированные в Base 64, разделенные двоеточием: Ваsic <Client ID>:<Client Secret>

rquid

Обязательное

Уникальный идентификатор запроса. Формируется по паттерну ([0-9][a-f][A-F]){32}). Параметр для журналирования входящих вызовов и разбора инцидентов. Для создания уникального идентификатора можно использовать стандартные библиотеки и классы для генерации UUID и GUID.

scope

Обязательное

Значение доступной области видимости — SBER_SPEECH. Разделитель — запятая.

curl --location --request POST 'https://salute.online.sberbank.ru:9443/api/v2/oauth' \
--header 'Authorization: Basic ZTU2MjM2MjctYmI4Yy00MTJjLTk0Yjct232hNjk5OGU4ZWYzOjg4N2QxNWEyLWNiNGYtNDk5OC05NTkxLTViMjZkNjJkMzc1MQ==' \
--header 'RqUID: 6f0b1291-c7f3-43c6-bb2e-9f3efb2dc98e' \
--header 'Content-Type: application/x-www-form-urlencoded' \
--data-urlencode 'scope=SBER_SPEECH'

Формат ответа

Поле Описание

access_token

Обязательное

Сгенерированный access token

expires_at

Обязательное

Время в секундах, в течение которого действует access token

{
"access_token": "eyJlbmMiOiJBMjU2Q0JDLUhTNTEyIiwiYWxnIjoiUlNBLU9BRVAtMjU2In0.DCXAAnwXjmRleOrIJcXDWbQwsP5UGSptcY3x5XXRkYZm6x3QkDQBL63DKQZzwrwmtuFbKajq6ULHuQhsmGax-l_R6AhRkr7pWzJi1jpzCenq9PAN2UjF0BX_IiDRgmEExH6_2OtHaJ_7KbudukIOLEgxD9l8WcXFY992dgqLL6eK2nnnUvyfmr4ITc9PWuAFsMIO6jweNFw0e9vRYEDkAbnv9EGR-w9CGwfBsHNWZwZlo7fyu07fkSfmqmGdBvU4344344luNNrHwktSGOzNhpLhu0-0A3KI950vmp_37QY8isDi3epGU3HShdrBZkk70fdXxBKQA.MV2IksoyxTV_c-qm6hSXaQ.LUT4JqOzKqmFOR07-Asq7Fhqj_eYSTXcsJAK-JchmM1QUqhPLBXsUyXXh6ZcjsnN7Q0QXzuBlSjaBWekgWANDirI6HP_MsEM4FxfJAOh73aowC700cEQPPYAxzPYG0d4bOqsZh8Ss57lJB2VM7M6Y2FcG2hb5Q0i2zPskqSWxXejuCyr2uIlY7Fe4bu4NUqtCaKJVwqriVWLfbA0OzZyA0osDc42Ba0u1adFAdaZDCE.IlKOixP8hSUimEI2pdP118Tx0StZjcLdbSauE5R0YAA",
"expires_at": 1617814516729
}

В поле expires_at указан срок действия токена в формате POSIX.

Коды ошибок

Код Описание

400

Bad Request. Неправильный или некорректный запрос

401

Unauthorized. Не авторизован

500

Internal Server Error. Внутренняя ошибка сервера

Пример ответа в случае ошибки 400

{
  "code":1,
  "message":"scope data format invalid"
}

Использование токена

  1. Пользователь делает запрос с заголовком Authorization с Bearer <Access token>.
  2. Если токен валиден, то запрос передается дальше в сервис SmartSpeech для синтеза текста из запроса.
  3. Если токена нет, или формат токена неверен, то приходит ошибка о неудачной аутентификации.
  4. Если токен есть, но он просрочен, приходит ошибка о токене с истекшим сроком действия. Пожалуйста, получите новый валидный токен.
Перед каждым запросом всегда проверяйте время жизни токена. Если до его истечения остается менее минуты, пожалуйста, получите новый токен доступа к сервису SmartSpeech.