Если в системе включена авторизация, то для начала работы с API необходимо пройти авторизацию в системе.
Реализованы несколько вариантов авторизации:
-
BASIC авторизация.
-
Авторизация методом GET по адресу /api/session с получением token.
-
Авторизация методом POST по адресу /api/session с получением token.
-
BASIC-авторизация — в этом случае при каждом HTTP-запрос нужно будет отправлять логин и пароль;
-
авторизация с использованием токена — при первом HTTP-запросе передаются логин и пароль, а сервер MS возвращается токен — уникальный идентификатор сессии (access token), который при последующих HTTP-запросах можно будет использовать вместо передачи логина и пароля. Срок действия токена (т.е. сессии) ограничен, поэтому для обновления токена при первом запросе сервер Mobile SMARTS дополнительно возвращает «токен обновления» (refresh token) — он нужен для получения нового токена после истечения срока действия текущего токена.
User and Authentication
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",
}
Вызов функций с использованием token
Для того чтобы обратиться к функциям (если не используется Basic авторизация), для которых необходима авторизация, необходимо в заголовке Authorization передавать токен:
Authorization: Bearer <token>
Иначе сервер вернет ошибку авторизации 401.