Запросы на восстановление паролей (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.

Обслуживание производится микросервисами mware, email, ws.

Для успешной отправки писем необходимо настроить профиль почтового сервера, учетную запись почтового сервера и выставить ей флаг 'isSystem'.

Запросы

HTTP verb Endpoint Описание

POST

/rest/v1/iam/pwd_reset_requests

Изменение своего пароля (после авторизации)

POST

/rest/v1/iam/pwd_reset_requests

Восстановление пароля (без авторизации)

PATCH

/rest/v1/iam/pwd_reset_requests/<id>

Замена забытого пароля (без авторизации)


Изменение своего пароля (после авторизации)

Запрос

Пример запроса
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@yandex.ru"
}
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"
  }
}

Коды ошибок

Возможные типы сообщений (поле 'error_details.msg_code'): 100xx, 101xx, 102xx, 153xx, 154xx.