Политика паролей#
Общее описание#
За включение парольной политики на типе объекта отвечает атрибут 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.