Авторизация в системе через REST API
Если в базе 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