Аутентификация и авторизация
Этот метод необходим для получения доступа к Системе и дальнейшему обращению к другим методам.
Запрос информации
Реализовано 2 способа авторизации:
- Комбинация login + password в параметрах GET-запроса
--------------------------
login | test_user
password | api_password
--------------------------
Также возможна комбинация, в которой вместо login
можно авторизоваться по email пользователя:
--------------------------------
email | test_user@mail.com
password | api_password
--------------------------------
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"
}