有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

我正在寻找图书馆提供先进的用户帐户保护的web应用程序。我需要以下功能:

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

是否有适当的解决方案满足所有或部分需求

提前谢谢


共 (3) 个答案

  1. # 1 楼答案

    您可以通过使用Spring.&Spring Security

    1) User account lock after several failed login attempts within defined time frame.

    您可以使用Spring安全性并计算失败尝试的次数,而bock用户here是文章的一部分

    常见问题#3:在多次登录失败后,如何禁用用户

    A common user requirement is to disable / lock an account after a number of failed login attempts. Acegi itself does not provide anything "out of the box", however in your application you can implement and register an org.springframework.context.ApplicationListener. Inside your application event listener you can then check for an instanceof the particular AuthenticationFailureEvent and then call your application user management interface to update the user details.

    例如:

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

    2) Password expiration within N days.

    您可以使用重置密码的Spring Quartz Support计划任务。您还可以在DB中设置ExpiryDate字段,每天在0000小时触发一个触发器并执行这些操作

    3) Password history tracking for every user.

    使用DB,您可以获取所用密码的历史记录,并且可以使用Spring-DAO support轻松地完成此操作

    顺便说一句,如果您发现任何专门用于此目的的框架,请告诉我:)

  2. # 2 楼答案

    我认为如果没有外部图书馆的需要,你的要求就没有那么复杂了

    1. 您可以将失败登录尝试的次数存储在数据库中客户端用户的一列中,如果在预定的时间段内找到,则可以在运行时增量期间存储
    2. 另一列可以保留密码的修改日期,因此您可以在运行时检查尝试登录是否超过该天数
    3. 这是一个棘手的问题,因为通常情况下,密码存储为某种类型的散列,而之前保存历史值没有多大意义
  3. # 3 楼答案

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

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