用于高级用户帐户保护的Java库
我正在寻找图书馆提供先进的用户帐户保护的web应用程序。我需要以下功能: 1) 在定义的时间范围内多次登录尝试失败后锁定用户帐户。用于高级用户帐户保护的Java库,java,security,web-applications,frameworks,jakarta-ee,Java,Security,Web Applications,Frameworks,Jakarta Ee,我正在寻找图书馆提供先进的用户帐户保护的web应用程序。我需要以下功能: 1) 在定义的时间范围内多次登录尝试失败后锁定用户帐户。 2) 密码在N天内过期。 3) 每个用户的密码历史记录跟踪 是否有适当的解决方案满足所有或部分需求 提前谢谢 您可以使用& 1) 在定义的时间范围内多次登录尝试失败后锁定用户帐户 您可以使用Spring安全性并计算失败尝试的次数,并且bock用户为文章 常见问题#3:在多次登录失败后,如何禁用用户? 一个常见的用户需求是在多次登录尝试失败后禁用/锁定帐户。Acegi
2) 密码在N天内过期。
3) 每个用户的密码历史记录跟踪 是否有适当的解决方案满足所有或部分需求
提前谢谢 您可以使用& 1) 在定义的时间范围内多次登录尝试失败后锁定用户帐户 您可以使用Spring安全性并计算失败尝试的次数,并且bock用户为文章 常见问题#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天内过期
您可以使用重置密码来安排任务。您还可以在DB中设置ExpiryDate字段,并可以每天在0000小时触发触发器并执行这些操作
3) 每个用户的密码历史记录跟踪
使用DB,您可以获取所用密码的历史记录,并且可以轻松地使用
顺便说一句,如果你找到任何专门用于此功能的框架(lee me know:)我不知道有任何框架提供这些功能,但我也不确定是否会费心去寻找。它们是非常简单的需求,很容易自己编写代码,可能比学习新框架所需的时间要短。然后避免对框架的依赖
对于与安全性相关的更复杂的需求,我建议。我认为,如果不需要外部库,您的需求就不太复杂
您可以使用像Shiro这样的轻量级安全框架,但我怀疑任何库都不能满足这些特定需求。你必须在上面写下你的逻辑。你对第二个要求的建议有点复杂。向用户表中添加时间戳列要容易得多,即User.passwordExpiryTimestamp.Thank,但我的意思是根本不需要计划作业。每次UserDetailsService查询用户时,它将expiryTimestamp与当前时间进行比较,并相应地设置UserDetails.CredentialsNoneExpired标志。@Kevin我认为job+到期日期将是一个不错的选择。密码历史记录跟踪的原因是,在密码到期后,用户不能使用与前一个密码相同的密码(或N个前一个密码中的一个)。换句话说,用户不应该能够重复使用他的旧密码。在这种情况下,您必须创建一个单独的DB表,将用户(一列)与密码哈希(另一列)关联起来。因此,您将能够为一个用户(相同的用户密钥id)拥有多行及其所有密码。创建一个日期列也很好。