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