Запросы на восстановление паролей (pwd_reset_requests)
Обзор
Производит управление запросами на восстановление паролей, а также на изменение своего пароля авторизованным пользователем.
Процедура возможна только в случае, если не используется сценарий внешней авторизации.
В зависимости от состояния авторизации текущий endpoint применяет один из двух алгоритмов:
Одношаговый алгоритм изменения своего пароля
Выполняется после авторизации.
-
1. POST-запрос на изменение пароля текущего авторизованного пользователя.
-
1. Проверка наличия полей 'current_pwd' и 'new_pwd' в JSON-теле запроса.
-
2. Проверка корректности текущего пароля.
-
3. Отправка запроса на изменение в MDC и проверка политики сложности паролей.
-
Двухэтапный алгоритм восстановления забытого пароля
Выполняется без авторизации.
-
1. POST-запрос на отправку письма со ссылкой на восстановление пароля.
-
1.1. Проверка наличия поля 'key' и опционально поля domain в JSON-теле запроса.
-
1.2. Поиск пользователя по значению в ключе: логин или email. При указании логина обязательно должен быть указан домен. Для email это опционально.
-
1.3. Создание сущности PwdResetRequest с ограничением времени жизни в 1 час.
-
1.4. Отправка письма на почту пользователя со ссылкой, содержащей UUID запроса на смену пароля. Ссылка ведет на системное веб-приложение /app-root, однако она содержит идентификатор, который может быть применен для непосредственного вызова API запросом PATCH.
-
-
2. PATCH-запрос на изменение пароля.
-
2.1. Проверка наличия поля 'pwd' в JSON-теле запроса.
-
2.2. Проверка актуальности запроса на восстановление пароля на основании идентификатора, переданного в URL.
-
2.3. Отправка запроса на изменение в MDC и проверка политики сложности паролей.
-
2.4. В случае успеха удаление сущности PwdResetRequest.
-
Для успешной отправки писем необходимо настроить профиль почтового сервера, учетную запись почтового сервера и выставить ей флаг 'isSystem'.
Запросы
HTTP verb | Endpoint | Описание |
---|---|---|
|
|
|
|
|
|
|
|
Изменение своего пароля (после авторизации)
Запрос
POST /rest/v1/iam/pwd_reset_requests HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"current_pwd": "25aN8Af",
"new_pwd": "A39sQ-19b"
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"error_code": 0,
"result": true,
"result_msg": "Check your email box for password reset url"
}
HTTP/1.1 412 Precondition failed
Content-Type: application/json; charset=utf-8
{
"error_code": 1501,
"error_message": "pwd contains invalid symbols. Expected: A-Za-z0-9_-.~!",
"error_details":{
"field": "pwd"
}
}
Восстановление пароля (без авторизации)
Шаг 1/2 двухэтапного алгоритма восстановления забытого пароля.
Запрос разрешено проводить не чаще чем 1 раз в минуту с одного и того же IP-адреса.
Запрос
POST /rest/v1/iam/pwd_reset_requests HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"key": "my.account@email.com"
}
POST /rest/v1/iam/pwd_reset_requests HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"key": "mylogin",
"domain": "pbx.era-platform.ru"
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"error_code": 0,
"result": true,
"result_msg": "Check your email box for password reset URL",
}
HTTP/1.1 412 Precondition failed
Content-Type: application/json; charset=utf-8
{
"error_code": 1413,
"error_message": "Email not found. Request your administrator to change password or setup email."
}
Замена забытого пароля (без авторизации)
Шаг 2/2 двухэтапного алгоритма восстановления забытого пароля.
Запрос
PATCH /rest/v1/iam/pwd_reset_requests/602c559c-0183-a834-ee7d-7cd30a921f58 HTTP/1.1
Content-Type: application/json; charset=utf-8
{
"pwd": "ew!hIb3V"
}
Ответ
HTTP/1.1 200 OK
Content-Type: application/json; charset=utf-8
{
"error_code": 0,
"result": true,
"result_msg": "Now login with new password",
"user": {
"domain": "pbx.era-platform.ru",
"login": "mylogin"
}
}
HTTP/1.1 412 Precondition failed
Content-Type: application/json; charset=utf-8
{
"error_code": 1501,
"error_message": "pwd contains invalid symbols. Expected: A-Za-z0-9_-.~!",
"error_details":{
"field": "pwd"
}
}