Настройки паролей

Параметры настроек паролей хранятся в файле backend.properties. Некоторые параметры доступны для редактирования через интерфейс раздела "Параметры системы" в одноименной секции.

Очистка неиспользуемых паролей

Задача по очистке неиспользуемых паролей удаляет из БД все неактивные пароли, которые старше времени жизни на момент очистки. Если время жизни равно или меньше нуля, то пароли не удаляются.

Задача запускается по Cron-выражению, которое редактируется только через backend.properties, после чего требуется перезапуск системы.

Параметр, определяющий время жизни неактивных паролей, доступен для редактирования через интерфейс системы - параметр "Время жизни записей неактивных паролей".

Примечания:

  • Из-за относительно частых событий аутентификации запуск очистки не должен производиться часто во избежание блокировки в БД и долгого ожидания аутентификации. Зависит от настроек блокировки при DELETE в БД.

  • Запуск рекомендуется ставить в нерабочее время (по возможности) или в часы наименьшей нагрузки.

  • Время жизни старого пароля определяется днями, поэтому запуск операции не рекомендуется производить чаще одного раза в сутки.

Проверки аутентификации по имени пользователя и IP-адресу

В текущей реализации проверка по имени пользователя не фиксирует попытки аутентификации по пустому имени пользователя (пустая строка, null, пробелы, табуляции и т.д.).

При попытке аутентификации берется контекст AuthenticationRequestContext, который содержит имя пользователя, IP-адрес клиента, время получения запроса, язык и другие параметры.

Перед проверкой введенных данных проверяется возможность аутентификации под введенным логином или IP-адресом:

  • Если аутентификация невозможна, то счетчик неудачных попыток увеличивается, возвращается ошибка о превышении лимита, таймер таймаута запускается заново.

  • Если аутентификация возможна, то идет обычная проверка правильности введенных данных.

  • Если данные верны, то аутентификация успешна, а счетчики неудачных попыток обнуляются.

  • Если данные неверные, то счетчик увеличивается, и в случае достижения или превышения лимита неверных попыток возвращается ошибка о превышении лимита.

Ошибка вида "Превышен лимит ошибок аутентификации {limit}. {timeout} секунд до следующей попытки" появляется на UI при превышении лимита ошибок аутентификации.

  • limit и timeout настраиваются в параметрах системы.

  • limit - Лимит ошибок аутентификации по имени пользователя или Лимит ошибок аутентификации по IP-адресу клиента.

  • timeout - Время ожидания после превышения лимита ошибок аутентификации по имени пользователя или Время ожидания после превышения лимита ошибок аутентификации по IP-адресу клиента.

Пример:

Каждая повторная неудачная аутентификация продлевает время жизни записи.

Заданные параметры: Лимит - 3 попытки; Таймаут - 30 секунд; Время жизни записи - 30 минут.

  1. При первой неудачной попытке в 15:00:00, введенные данные проверяются, в счетчике создается запись.

    • Неудачных попыток - 1, время последней неудачной попытки - 15:00:00, время жизни записи - 30 минут.

  2. Вторая неудачная попытка в 15:01:00, введенные данные проверяются, в счетчике запись обновляется.

    • Неудачных попыток - 2, время последней неудачной попытки - 15:01:00, время жизни записи - 30 минут (время жизни обновилось).

  3. Третья неудачная попытка в 15:02:00, введенные данные проверяются, в счетчике запись обновляется.

    • Неудачных попыток - 3, время последней неудачной попытки - 15:02:00, время жизни записи - 30 минут (время жизни обновилось), таймаут - 30 секунд, лимит достигнут, следующие попытки будут блокироваться до истечения таймаута.

  4. Четвертая неудачная попытка в 15:02:15 - таймаут не истек, попытка по умолчанию не удачна, введенные данные не проверяются, в счетчике запись обновляется.

    • Неудачных попыток - 4, время последней неудачной попытки - 15:02:15, время жизни записи - 30 минут (время жизни обновилось), таймаут - 30 секунд (таймаут обновился), лимит превышен, следующие попытки будут блокироваться до истечения таймаута.

  5. Пятая неудачная в 15:15:00 - таймаут истек, но время жизни записи еще не истекло, в счетчике запись обновляется.

    • Неудачных попыток - 5, время последней неудачной попытки - 15:15:00, время жизни записи - 30 минут (время жизни обновилось), таймаут - 30 секунд (таймаут обновился), лимит превышен, следующие попытки будут блокироваться до истечения таймаута.

Неверный ввод может осуществляться 3 раза без таймаута, после этого (до истечения времени жизни записи) таймаут будет выводиться после каждого неверного ввода.

Успешная аутентификация удаляет запись, после чего будут доступны все 3 попытки без таймаута.

Известные проблемы

  1. При превышении лимита по обеим аутентификациям - ошибка будет приходить только от одной, заранее неизвестно от какой.

    • Возможное решение: включайте счетчики через Параметры системы в несколько шагов. Сначала (при выключенных компонентах проверки) включите проверку по имени пользователя и сохраните изменения. Далее включите проверку по IP-адресу и сохраните изменения.

  2. Некорректная работа при использовании общего прокси для доступа к системе. У всех пользователей будет один и тот же IP-адрес, вследствие чего счетчик будет увеличиваться от разных людей, и заблокированы будут все пользователи на этом IP-адресе.

    • Возможное решение: отключите компонент проверки по IP-адресу.