8.8 KiB
Описание функций авторизации
Алгоритм
Refresh token токен действует 12 часов и за эти 12 часов не реже чем раз в 3 часа нужно обновить Refresh token ну и заодно Access token обновиться. Аccess token действует 20 минут (позже уменьшу до 10 минут) и его можно обновить в любое время, если будет просрочен выдаст 401 ошибку. Чтобы время от времени по расписанию не запрашивать обновление токена, можно сделать обвёртку для 2й отправки запроса, в случае выявления просрочки токена чтобы эта обвёртка отправляла запрос Refresh, а потом обратно в нужное место отправляла запрос.
Настройки хранятся в HashiCorp Vault и их можно загрузить туда так:
vault kv put secret/org-ccalm-jwt jwt.secret=my-secret-value db.user=admin db.pass=123456
Оглавление
- Получить список разрешений для пользователя по Access token
- Получить CAPTCHA с проверочным токеном
- Создать нового пользователя
- Получить информацию о пользователе по его Access token
- Авторизоваться
- Обновить токен доступа (а также обновить рефреш токен)
- Ссылка для подтверждения смены пароля (переходят на неё из почты)
- Принять капчу и код для инициализации процедуры восстановления пароля
- Обновить пароль по логину и старому паролю
- Проверить валидность токена
Получить список разрешений для пользователя по Access token
https://istransit.kz/api/authorization/v02/access/
Запрос может содержать параметры фильтрации для поиска частичного совпадения названия (действия), если параметров фильтрации нет или он равен null то вернёт все записи.
Пример запроса:
{
"action_name":"arm_"
}
Пример ответа:
{
"error_code": 0,
"error_message": "",
"data": [
"arm_accounting",
"arm_carrier",
"arm_hr"]
}
Получить CAPTCHA с проверочным токеном
https://istransit.kz/api/authorization/v02/captcha/
Пример запроса:
{
"email":"test@mail.ru"
}
Пример ответа:
{
"image":"тут gif в base64",
"token":"ZUROMC9xQVpRNjVGZGZBSWdrSGk5NHlPK2JXcHJMHVlbWVBPT0=.ywHb5zzI+ARK3XDRpgVkC1fdlqEQWWOXLuVIu\/rRMho="
}
Где "image" это рисунок в base64
А "token" это токен для последующей проверки введённого кода "code":"XXXXXX".
По умолчанию токен captcha действует 10 минут.
Создать нового пользователя
https://istransit.kz/api/authorization/v02/create/
Письмо с паролем придёт на почту
Пример запроса:
{
"country_id": "1",
"company_name": "ТОО 'Тестовая компания'",
"position": "Менеджер",
"name": "Берик",
"surname": "Султанов",
"patronymic": "Серикович",
"phone": "+7777123456",
"email": "test@test.kz",
"code":"11111", //Код с CAPTCHA
"token":"ZUROMC9xQVpRNjVGZGZBSdyc2JIV0ZueHdDMHVlbWVBPT0=.ywHb5zzI+ARK3XDRpgVkC1fdlqEQWWOXLuVIu\/rRMho=" //Токен с CAPTCHA
}
Пример ответа:
{
"error_code": "0",
"error_message":""
}
Получить информацию о пользователе по его Access token
https://istransit.kz/api/authorization/v02/info/
Запрос:
Cookie: jwt_a = Access token
Пример ответа:
{
"error_code": "0",
"error_message": "",
"name": "Igor",
"surname": "M",
"patronymic": "I",
"roles": "Кассир, Кладовщик",
"time": "1703838784", //Время с сервера
"expiration": "1696924443", //Когда "протухнет" пароль
"appid": "postman",
"arm": "monitoring"
}
Авторизоваться
https://istransit.kz/api/authorization/v02/login/
Пример запроса:
{
"login" : "test@istt.kz",
"password" : "test",
"totp": "123456",
"appid" : "postman"
}
В ответ:
{
"error_code": "0",
"error_message": "",
"name": "Igor",
"surname": "M",
"patronymic": "I",
"roles": "Кассир, Кладовщик",
"time": "1703838784", //Время с сервера
"expiration": "1696924443", //Когда протухает пароль
"appid": "postman",
"arm": "monitoring"
}
Также в ответ Cookie:
Cookie: jwt_a = Access token
Cookie: jwt_r = Refresh token
Обновить токен доступа (а также обновить рефреш токен)
https://istransit.kz/api/authorization/v02/refresh/
В запросе Cookie:
Cookie: jwt_a = Access token
Cookie: jwt_r = Refresh token
Пример ответа:
{
"error_code": "0",
"error_message":""
}
Также в ответе Cookie:
Cookie: jwt_a = Access token
Cookie: jwt_r = Refresh token
Ссылка для подтверждения смены пароля (переходят на неё из почты)
https://istransit.kz/api/authorization/v02/reset/
Пример запроса:
https://istransit.kz/api/authorization/v02/reset/?token=xxxxx&lng=1
В ответ HTML страница с результатом на 7 секунд, с переходом на главную страницу:
<!DOCTYPE html>
<html lang="ru">
<head>
<title></title>
<meta http-equiv="refresh" content="7; url='https://aistransit.kz'" />
</head>
<body>
<h1>Описание результата</h1>
</body>
</html>
Принять капчу и код для инициализации процедуры восстановления пароля
https://istransit.kz/api/authorization/v02/restore/
Пример запроса:
{
"code":"11111",
"token":"ZUROMC9xQVpRNjVGZGZBSdyc2JIV0ZueHdDMHVlbWVBPT0=.ywHb5zzI+ARK3XDRpgVkC1fdlqEQWWOXLuVIu\/rRMho="
}
Код и токен из captcha
Пример ответа:
{
"error_code": "0",
"error_message":""
}
Обновить пароль по логину и старому паролю
https://istransit.kz/api/authorization/v02/update/
Для этой функции авторизация пользователя не обязательна, а значит пользователя можно не авторизовывать если у него просрочен пароль.
В новом пароле должно быть цифра, большая латинская буква, маленькая латинская буква, один спец символ и длина не менее 6 символов.
Пример запроса:
{
"login":"test@mail.ru",
"password":"12345",
"password_new":"54321"
}
Пример ответа:
{
"error_code": "0",
"error_message":""
}
Проверить валидность токена доступа
https://istransit.kz/api/authorization/v02/alive/
На вход Cookie с jwt_a токеном, на выход код ошибки.
Пример ответа:
{
"error_code": "0",
"error_message":""
}