Авторизация в системе через REST API

Последние изменение: 10.04.2018

Если в базе Mobile SMARTS включена авторизация (см. подробнее), то для подключения через REST API Вам также будет необходимо проходить авторизацию.

Для работы с REST API необходим пользователь с правами "Внешнее подключение" или "Администратор" (устанавливается в Панели управления Mobile SMARTS).


Реализованы несколько вариантов авторизации:

  • BASIC авторизация
  • Авторизация методом GET по адресу /api/session с получением token
  • Авторизация методом POST по адресу /api/session с получением token

BASIC авторизация

Данный вид авторизации чаще всего используется браузером для доступа к функциям API

При использовании данного метода необходимо в заголовке каждого запроса указывать:

Authorization: Basic {login}:{password}

Допускается base64 при формировании строки {login}:{password}

Авторизация методом GET

Еще один способ авторизации - отправить GET запрос по адресу /api/v1/session, при этом в url запросе указать параметры login и password.

Пример:

    https://localhost:9000/api/v1/session?username=${Username}&password=${Password}

Ответ сервера:

{
   Access_token:"123123123",
   Token_type:"bearer",
   Expires_in:86400,
   Refresh_token:"321321321",
}

Авторизация методом POST

Авторизация по логину и паролю происходит путем отправки POST запроса на сервер, в результате которого возвращается access_token и refresh token в формате JSON.

Пример запроса:

POST /oauth/token HTTP/1.1
Host: mobilesmarts.ru/api/session
Content-Type: application/x-www-form-urlencoded

grant_type=password&client_id=123&client_secret=user&username=user@domain.ru&password=123456

Ответ сервера:

{
   Access_token:"123123123",
   Token_type:"bearer",
   Expires_in:86400,
   Refresh_token:"321321321",
}

Восстановление после окончания срока действия сессии

Восстановление после окончания срока действия сессии происходит путем отправки refresh_token на сервер, в результате приходит новый access_token и refresh_token

Пример:

POST /oauth/token HTTP/1.1
Host: mobilesmarts.ru/api/session
Content-Type: application/x-www-form-urlencoded

grant_type:refresh_token&client_id=123&client_secret=user&refresh_token=321321321

Ответ:

HTTP/1.1 200 OK
Content-Type: application/json

{
   Access_token:"99999",
   Token_type:"bearer",
   Expires_in:86400,
   Refresh_token:"789789789",
}

Вызов функций с использованием token

Для того чтобы обратиться к функциям (если не используется Basic авторизация), для которых необходима авторизация, необходимо в заголовке Authorization передавать токен:

Authorization: Bearer <token>

Иначе сервер вернет ошибку авторизации 401