用于高级用户帐户保护的Java库

时间:2011-02-03 11:00:24

标签: java security web-applications frameworks java-ee

我正在寻找库来为Web应用程序提供高级用户帐户保护。我需要以下功能:

1)在规定的时间范围内多次登录尝试失败后,用户帐户锁定 2)密码在N天内到期 3)每个用户的密码历史跟踪。

是否有适合所有或部分需求的解决方案?

提前致谢!

3 个答案:

答案 0 :(得分:1)

您可以使用Spring.&来完成所有这些操作。 Spring Security

  

1)在定义的时间范围内多次登录尝试失败后,用户帐户锁定。

您可以使用Spring Security并计算失败尝试次数,并且bock用户here是文章

常见问题#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 support轻松完成。

顺便说一句,如果你发现任何专门针对这个lee的框架我知道:)

答案 1 :(得分:1)

我认为你的要求并不是那么复杂,不需要外部库。

  1. 您可以在数据库中的client_user列中存储失败的登录尝试次数,如果在预定的时间范围内找到,则可以在运行时增量期间存储失败的登录尝试次数。
  2. 另一列可以保留密码的date_modified,因此您可以在运行时检查尝试登录是否已超过该天数。
  3. 这是一个棘手的问题,因为通常密码存储为某种类型的哈希,因此保留历史值并没有多大意义。

答案 2 :(得分:0)

我不知道任何提供这些功能的框架,但我不确定我是否会费心去找一个。它们是非常简单的要求,很容易自己编写代码,可能花费的时间少于学习新框架所需的时间。然后,您避免依赖于框架。

对于与安全性相关的更复杂的要求,我建议Spring Security