har*_*rry 5 spring spring-security
我正在研究一个基于Spring MVC的传统Web应用程序,该应用程序正在使用 - 按当前标准 - 不合适的散列算法.现在我想逐渐将所有哈希迁移到bcrypt.我的高级策略是:
使用Spring Security实现此策略的最惯用方法是什么?我应该使用自定义过滤器还是我的AccessDecisionManager或......?
您可能需要自定义,AuthenticationProvider因为密码实际上与用户数据进行比较,并且您拥有所需的所有信息.
在该authenticate方法中,您将首先加载用户数据.然后使用a BCryptPasswordEncoder和旧版密码检查用户提供的密码.如果两者都没有返回匹配,则抛出一个BadCredentialsException.
如果用户成功验证(非常重要:-))并且密码是传统格式(传统编码器匹配),则可以调用一些其他代码来更新用户的帐户数据,并用bcrypt替换旧散列.该BCryptPasswordEncoder也可以被用来创建新的哈希值.
如果需要,您可以在进行比较之前预先检测存储的哈希是否已经是bcrypt.Bcrypt字符串具有完全不同的格式.
另请注意,为了使猜测有效的帐户名称变得更加困难,您应该尝试使方法在提供的用户名存在时和不存在的用户名时都表现相同(就时间而言).因此,即使您没有提供用户名的任何用户数据,也请调用编码器.
| 归档时间: |
|
| 查看次数: |
1324 次 |
| 最近记录: |