Политика паролей#

Общее описание#

За включение парольной политики на типе объекта отвечает атрибут bPasswordSettingsInOT в классе Btk_Setting (по умолчанию — false).

  • Если атрибут установлен (true), используется политика из класса Btk_UserPasswordSetting.

  • Если атрибут не установлен или равен false, политика определяется параметрами класса Btk_User.


Атрибуты, определяющие требования к паролю#

  • bPassSpecSymb — необходимость наличия хотя бы одного специального символа. По умолчанию — 0 (не требуется).
    Допустимые символы: !@#$%^&*()-+\?/.,№;:

  • bPassLetterDigit — обязательное наличие как букв, так и цифр. По умолчанию — 0.

  • bPassUpperLowerLetter — необходимость использования как строчных, так и прописных букв. По умолчанию — 0.

  • nPassMinSymbCnt — минимально допустимое количество символов в пароле. Значение по умолчанию отсутствует (ограничение не применяется).


Атрибуты, определяющие политику управления паролем#

  • nNonRepeatPassAmount — количество последних паролей, которые нельзя повторно использовать. По умолчанию отсутствует (повтор разрешён).

  • nDayInactivityCntForUserBlocking — число дней без активности, после которого пользователь будет заблокирован. Значение по умолчанию — 180.

  • nMinLifitime — минимальное количество дней между сменами пароля. Запрещает слишком частую смену. По умолчанию отсутствует.

  • jTempBlockingForUnsuccessfulLogin — параметры временной блокировки при неудачных попытках входа. JSON-объект с полями:

    • nNumberOfAttempts — допустимое число ошибочных попыток входа;

    • nBlockingTimeMin — время блокировки (в минутах) при превышении лимита.

  • nValidityPeriod — срок действия постоянного пароля (в днях).

  • nValidityPeriodTemp — срок действия временного пароля (в днях).

  • sDaysForNotifyChangePass — количество дней до окончания срока действия пароля, за которое будет отправлено уведомление о необходимости его смены.

Если bPasswordSettingsInOT = false, то применяются следующие параметры из Btk_User:

  • bPassSpecSymb, bPassLetterDigit, nPassMinSymbCnt — действуют аналогично вышеописанным.


Валидация политики#

1. Проверка требований к сложности пароля#

Происходит при смене пароля в методе Btk_ChangePasswordAvi.Card.beforeCloseForm. Используются следующие методы:

  • Btk_UserApi.validateUserPassword — проверяет соблюдение минимального срока жизни пароля (nMinLifitime).

  • Btk_UserApi.validateTempPassword — проверяет, не истёк ли срок действия текущего пароля (nValidityPeriod или nValidityPeriodTemp).

  • Btk_UserApi.checkPass — производит детальную проверку структуры нового пароля по заданным параметрам (bPassSpecSymb, bPassLetterDigit, bPassUpperLowerLetter, nPassMinSymbCnt).

2. Проверка уникальности пароля#

Метод Btk_UserApi.setsPass вызывает Btk_UserPassHistoryApi.register, который сравнивает новый пароль с предыдущими.

  • Если nNonRepeatPassAmount > 0, установка пароля, совпадающего с одним из последних, запрещается.

  • Например, при значении 2 система не позволит использовать пароль, совпадающий с любым из двух предыдущих.

3. Обработка устаревших паролей и уведомлений#

Методы:

  • processUpdatingOutdatedPass — используется в составе job-процесса. При истечении срока действия пароля:

    • устанавливает Btk_User.bChangePasswd = true;

    • автоматически генерирует новый временный пароль.

  • emailNotifyUserForNeedChangePassword — отправляет уведомление пользователю, если до окончания срока действия пароля осталось количество дней, заданное в sDaysForNotifyChangePass.

4. Временная блокировка при неудачных попытках входа#

Метод validateBlockingUserResult контролирует количество подряд неудачных попыток входа:

  • При превышении лимита jTempBlockingForUnsuccessfulLogin.nNumberOfAttempts пользователь временно блокируется.

  • Длительность блокировки задается параметром jTempBlockingForUnsuccessfulLogin.nBlockingTimeMin.