Перейти к основному содержимому

Аутентификация и авторизация

Этот метод необходим для получения доступа к Системе и дальнейшему обращению к другим методам.

Запрос информации

Реализовано 2 способа авторизации:

  1. Комбинация login + password в параметрах GET-запроса
--------------------------
login | test_user
password | api_password
--------------------------

Также возможна комбинация, в которой вместо login можно авторизоваться по email пользователя:

--------------------------------
email | test_user@mail.com
password | api_password
--------------------------------
  1. POST-запрос login и JWT token.

    В body запроса <url_smartroad>/api/<version>/login вставляем код, приведенный ниже, после чего берем получившийся JWT и вставляем в Authentication запроса с указанием типа Bearer Token

{
"username": "test_user",
"password": "api_password"
}
Ответ:
{
"access_token": "<new_access_token>",
"refresh_token": "<new_refresh_token>",
"expires_in": 900
}

По истечении срока действия токена его необходимо обновить с помощью POST-запроса <url_smartroad>/api/<version>/token/refresh: в тело запроса вставляется значение refresh_token из предыдущего запроса

{
"token": "<refresh_token>"
}
Ответ: 
{
"access_token": "<new_access_token>",
"refresh_token": "<new_refresh_token>",
"expires_in": 900
}

Авторизация обязательна для совершения любых дальнейших запросов.

Обработка ошибок

При отправке в body запроса вместо username - login:

{
"login": "test_user",
"password": "api_password"
}

должен быть получен следующий ответ:

404 Not Found
{
"code": "PGRST202",
"details": "Searched for the function api.login with parameters login, password or with a single unnamed json/jsonb parameter, but no matches were found in the schema cache.",
"hint": "Perhaps you meant to call the function api.login(email, password, username)",
"message": "Could not find the function api.login(login, password) in the schema cache"
}

При отправке запроса:

  • с отсутствием логина и/или пароля
  • при неверном написании названия запроса login/refresh

Варианты неверного запроса:

--------------------------
login | //отсутствие логина
password | api_password
--------------------------
--------------------------
login | test_user
password | //отсутствие пароля
--------------------------
--------------------------
login | //отсутствие логина
password | //отсутствие пароля
--------------------------
https://{ip}:{port}/api/{version}/loooooofhgin
https://{ip}:{port}/api/{version}/refffffffffresh

должен быть получен следующий ответ:

401 Unauthorized:
{
"error": "Authorization header or login/email and password parameters are required"
}

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

401 Unauthorized:
{
"code": "PT401",
"details": "Пользователь c параметрами: [test_user1] не может быть найден в системе или его учетная запись в настоящее время неактивна",
"hint": "Убедитесь, что данные переданы правильно, и убедитесь, что учетная запись активна",
"message": "Пользователь c параметрами: [test_user1] не найден или не активен"
}

При отправке параметра запроса с неверным паролем должен быть получен следующий ответ:

403 Forbidden:
{
"code": "PT403",
"details": "The password provided for the user [test_user] is incorrect and does not match the stored credentials",
"hint": "Check the password",
"message": "User: [test_user] invalid password"
}