По умолчанию на сервере применяется Basic-авторизация. Данная авторизация подразумевает передачу логина и пароля в заголовке запроса.
Для авторизации клиентского приложения требуется получить token, который нужно передавать в каждом запросе и в определенном заголовке.
пример запроса на авторизацию
POST http://localhost/auth HTTP/1.1
Content-Type: application/x-www-form-urlencoded; charset=UTF-8
UserName=логин&Password=пароль
где,
- UserName: string — имя пользователя
- Password: string — пароль пользователя
Ответом от сервера может быть один из результатов:
Авторизация выполнена
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"token":"YWRtaW4NCkFkb","user":{"claims": ".admin.user.","userId":1}}
, где
- token: string — токен-авторизации, который нужно передавать в каждом запросе на сервер;
- user.claims: string — строка со списком ролей, которые присутствуют у пользователя, разделителем выступает символ «.» (точка);
- user.userId: integer — идентификатор пользователя.
Пользователь не авторизован
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{"code": 401, "meta": { "success": false, "msg": "Не авторизован." }}
, где
- code: integer — статус запроса, всегда 401;
- meta.success: boolean — результат запроса;
- meta.msg: string — причина, может быть и пустая строка.
Пример запроса на сервер
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
RPC-Authorization: Token YWRtaW4NCkFkb
[{ тут сигнатура запроса }]
Токен должен отправляться на сервер в следующем формате, [Token][пробел][строка]:
- [Token] — строка с указанием данного слова;
- Далее следует пробел, который выступает разделителем;
- Токен, который был получен при авторизации.
Заголовок RPC-Authorization для различных приложений может иметь своё название. Какое наименование передавать, нужно уточнить у разработчика REST сервиса.
Токен
-это специальная строка в которой зашифрован логин и пароль. Например, user:password, где символ «:» является разделителем. Для дополнительной безопасности указанная выше строка преобразуется в base64.
OpenToken
В некоторых случаях можно передать токен по другому, в открытом виде (главное в них не должно быть символа «:») без кодирования в base64.
HTTP/1.1 200 OK Content-Type: application/json; charset=utf-8 RPC-Authorization: OpenToken Логин:Пароль [{ тут сигнатура запроса }]