Библиотека Java для расширенной защиты учетных записей пользователей - PullRequest
4 голосов
/ 03 февраля 2011

Я ищу библиотеку для обеспечения расширенной защиты учетных записей пользователей для веб-приложений.Мне нужны следующие функции:

1) Блокировка учетной записи пользователя после нескольких неудачных попыток входа в систему в течение определенного периода времени.
2) Срок действия пароля в течение N дней.
3) Отслеживание истории паролей для каждого пользователя.

Есть ли подходящее решение для всех или некоторых из этих потребностей?

Заранее спасибо!

Ответы [ 3 ]

1 голос
/ 03 февраля 2011

Я думаю, что ваши требования не так сложны для реализации, без необходимости использования внешней библиотеки.

  1. Вы можете сохранить количество неудачных попыток входа в систему в столбце вашего client_user в базе данных ипри увеличении времени выполнения, если оно найдено в течение заданного вами периода времени.
  2. В другом столбце может храниться дата_модифицированный вашего пароля, поэтому вы можете проверить во время выполнения, превысил ли количество попыток входа в систему это количество дней.
  3. Этохитрый, поскольку обычно пароли хранятся в виде хэшей какого-то рода, поэтому не имеет большого смысла хранить исторические значения.
1 голос
/ 03 февраля 2011

Вы можете сделать все это, используя Spring . & Spring Security

1) Блокировка учетной записи пользователя после нескольких неудачных попыток входа в систему в течение определенного периода времени.

Вы можете использовать Spring Security и не считать количество неудачных попыток и заблокировать пользователя здесь это статья

Распространенная проблема № 3: Как отключить пользователя после нескольких неудачных попыток входа в систему?

Общее требование пользователя - отключить / заблокировать учетную запись после нескольких неудачных попыток входа в систему. Сам Acegi не предоставляет ничего «из коробки», однако в вашем приложении вы можете реализовать и зарегистрировать org.springframework.context.ApplicationListener. Внутри прослушивателя событий вашего приложения вы можете проверить экземпляр конкретного AuthenticationFailureEvent, а затем вызвать интерфейс управления вашим приложением, чтобы обновить данные пользователя.

Например:

 public void onApplicationEvent(ApplicationEvent event) {

   // check failed event
   if(event instanceof AuthenticationFailurePasswordEvent){
      // call user management interface to increment failed login attempts, etc.
      . . .
   }
 }

2) Срок действия пароля - N дней.

Вы можете запланировать задачу, используя Spring Quartz Support , которая сбрасывает пароль. Также вы можете иметь поле ExpiryDate в БД и запускать триггер каждый день @ 0000 Часы и выполнять вещи

3) Отслеживание истории паролей для каждого пользователя.

Используя БД, вы можете взять историю использованного пароля и использовать Поддержка Spring-DAO , чтобы сделать это легко.

кстати, если вы найдете какие-либо рамки, специально предназначенные для этого, дайте мне знать:)

0 голосов
/ 03 февраля 2011

Я не знаю ни одного фреймворка, обеспечивающего эти функции, но я не уверен, что я бы тоже попытался его найти. Это очень простые требования, которые можно было бы легко самостоятельно кодировать, вероятно, за меньшее время, чем потребовалось бы для изучения новой среды. Тогда вы избегаете зависимости от фреймворка.

Для более сложных требований, связанных с безопасностью, я бы рекомендовал Spring Security .

...