Пароли#

Изменение пароля#

Метод

POST https://login.company.com/blitz/api/v3/users/{instanceId}/pswd

Изменение пароля. Чтобы узнать значение instanceId для пользователя, необходимо предварительно вызвать методом GET сервис получения атрибутов пользователя.

Необходимые разрешения: blitz_api_usec_chg или blitz_api_sys_usec_chg.

Заголовки
  • При смене пароля в пользовательском режиме необходимо передать заголовки с IP‑адресом пользователя и User-Agent.

  • В сценарии самостоятельной смены пользователем пароля в Личном кабинете возможен сброс сессий пользователя. При этом может быть нежелательно, чтобы произошел выход пользователя с текущего устройства/браузера. Для того, чтобы указать Blitz Identity Provider, что определенное устройство необходимо сохранить по результатам успешной смены пароля (не делать с него логаут), необходимо в вызов сервиса смены пароля передать от приложения заголовок IB-CI-UA-ID с идентификатором текущего устройства пользователя.

    Совет

    Идентификатор текущего устройства пользователя можно получить из маркера идентификации.

  • Для отправки письма на английском языке укажите заголовок Accept-Language: en (актуально только для версии v3).

Тело запроса
  • current – текущий пароль пользователя (только при смене пароля в пользовательском режиме – обязательно передается).

  • password – новый пароль пользователя (необязательный параметр). Если параметр не задан, то Blitz Identity Provider самостоятельно сгенерирует новый пароль.

  • resetSessions – в случае если параметр не указан или указан в значении true, то при смене пароля будут аннулированы все сессии пользователя и удалены запомненные устройства. Если необходимо только сменить пароль без сброса сессий, то необходимо явно указать параметр в значении false.

  • sendPswdToAttr – имя атрибута с телефонным номером для отправки пользователю пароля (необязательный параметр). Если параметр задан, то пользователю на телефон из указанного атрибута будет отправлена SMS с паролем.

Возвращает
  • В случае успешного вызова Blitz Identity Provider - HTTP 204 No Content.

  • Если смена пароля завершилась ошибкой - сообщение об ошибке:

    • HTTP 401 Unauthorized в случае ошибки контроля доступа - неправильный маркер доступа или неправильный текущий пароль пользователя.

    • HTTP 400 Bad Request - новый пароль не удовлетворяет требованиям парольной политики.

Примеры

Пользовательский режим смены пароля#
POST /blitz/api/v3/users/Mzg…J1/pswd HTTP/1.1
Content-Type: application/json
X-Forwarded-For: 200.200.100.100
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_5)…
Authorization: Bearer wzb…Tw
IB-CI-UA-ID: {SHA256}rVWFmwgRKWeW_flH4CA4yuW7OhKZ32Da94m0kzwWsVs

{
    "current": "QWErty123",
    "password": "P@$$w0rd",
    "resetSessions": false
}
Режим смены пароля системой#
POST /blitz/api/v3/users/Mzg…J1/pswd HTTP/1.1
Content-Type: application/json
Authorization: Bearer qwa…Ez

{
    "password": "P@$$w0rd",
    "resetSessions": true
}
Отправка нового пароля по SMS с автоматической генерацией пароля#
POST /blitz/api/v3/users/Mzg…J1/pswd HTTP/1.1
Content-Type: application/json
Authorization: Bearer qwa…Ez

{
    "sendPswdToAttr": "phone_number"
}
Запрос смены пароля на английском языке#
curl -v --location --request POST 'https://demo.identityblitz.com/blitz/api/v3/users/YnVpbHQtaW46a2dhdnJpbG92QGlkYmxpdHoucnU6MTcxMDU5ODgyODY3MjU0ODg2NA/pswd' \
--header 'Content-Type: application/json' \
--header 'Accept-Language: en' \
--header 'Authorization: Bearer ...' \
--data-raw '{"password": "nN2L98Nu1234"}'
Неправильный текущий пароль#
{
    "type": "security_error",
    "error": "invalid_credential",
    "desc": "Wrong subject identifier or current password"
}
Неправильный маркер доступа#
{
    "type": "security_error",
    "error": "bad_access_token",
    "desc": "BEARER_AUTH: CRID does not match"
}
Новый пароль не соответствует парольной политике: слишком короткий#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "Password's length must be greater than 6",
            "pos": "password",
            "params": {
                "rule": "to_short",
                "low": 6
            }
        }
    ]
}
Новый пароль не соответствует парольной политике, установленной в LDAP-каталоге#
{
    "type": "input_error",
    "error": "password_policy_violated",
    "desc": "Failed to update password\n",
    "pos": "password",
    "params": {
        "rule": "id_store"
    }
}
Новый пароль не соответствует парольной политике: не содержит требуемых групп символов#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "Password doesn't match enough symbols groups",
            "pos": "password",
            "params": {
                "rule": "not_enough_groups",
                "no_matched_groups": [
                    {
                     "desc": "password.policy.desc.digits",
                     "min_number_symbols": 1
                    },
                    {
                        "desc": "password.policy.desc.capital",
                        "min_number_symbols": 1
                    },
                    {
                        "desc": "password.policy.desc.special",
                        "min_number_symbols": 1
                    }
                ]
            }
        }
    ]
}
Новый пароль не соответствует парольной политике: пароль ранее использовался#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "Password found in previous used ones",
            "pos": "password",
            "params": {
                "rule": "in_password_history"
            }
        }
    ]
}
Новый пароль не соответствует парольной политике: новый пароль совпадает с текущим#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "A new password can't be the same as the current",
            "pos": "password",
            "params": {
                "rule": "eq_current"
            }
        }
    ]
}
Новый пароль не соответствует парольной политике: в новом пароле недостаточное число символов отличается от прежнего#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "There are not enough new characters in a new password",
            "pos": "password",
            "params": {
                "rule": "not_enough_new_chars",
                "minNew": 5
            }
        }
    ]
}
Новый пароль не соответствует парольной политике: пароль включает вхождение из словаря запрещенных паролей#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "Password contains a word from the stop dictionary",
            "pos": "password",
            "params": {
                "rule": "in_stop_dic",
                "stop_word": "qwerty"
            }
        }
    ]
}
Новый пароль не соответствует парольной политике: пароль совпадает со словарным#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "Password found in a password dictionary",
            "pos": "password",
            "params": {
                "rule": "in_password_dic"
            }
        }
    ]
}
Новый пароль не соответствует парольной политике: пароль изменен ранее разрешенного срока#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "password_policy_violated",
            "desc": "Password is too young",
            "pos": "password",
            "params": {
                "rule": "too_young",
                "minAgeInSec": 86400
            }
        }
    ]
}
Переданный атрибут для отправки пароля не существует#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "wrong_value",
            "desc": "Wrong mobile attribute 'phone_number_wrong'",
            "pos": "sendPswdToAttr"
        }
    ]
}
У пользователя не задан атрибут с телефоном для отправки пароля на телефон#
{
    "type": "input_error",
    "error": "wrong_values",
    "errors": [
        {
            "type": "input_error",
            "error": "wrong_value",
            "desc": "User not contains mobile attribute 'phone_number'",
            "pos": "sendPswdToAttr"
        }
    ]
}

Изменение пароля ведомого аккаунта#

Метод

POST https://login.company.com/blitz/api/v2/users/{subjectId}/password

Изменение пароля ведомой учетной записи пользователя с помощью ведущей учетной записи пользователя. subjectId – идентификатор (sub) ведомой учетной записи.

Заголовки

В запрос должен быть добавлен заголовок с маркером доступа на разрешение с именем blitz_change_password, полученным ведущей учетной записью. Ведущий пользователь может вызвать смену пароля ведомого только в том случае, если ранее ведущему пользователю было дано право на изменение пароля change_password.

Тело запроса

Атрибут value со значением нового пароля, которое должно соответствовать требованиям настроенной парольной политики.

Возвращает
  • При успешной смене пароля - статус HTTP 200 (OK).

  • При наличии ошибки - описание полученной ошибки.

Пример

POST /blitz/api/v2/users/c574a512-3704-4576-bc3a-3fe28b636e85/password HTTP/1.1
Authorization: Bearer cNwIX…Tg
Content-Type: application/json

{"value":"QWErty1234"}
{
    "errors": [
        {
            "code": "access_denied",
            "desc": "Not enough rights: change_password",
            "params": {}
        }
    ]
}