【发布时间】:2012-05-17 16:10:33
【问题描述】:
所以我知道您可以根据 userDetail 属性使用盐检查 Spring Security 中的密码,然后对其进行散列以与数据库中的散列进行比较,但是如果创建每个用户时使用的盐是随机的(并且是存储在数据库中),我是否需要创建自己的包含 salt 属性的 userDetails 类,然后将其设置为 spring security 用于在 securityApplicationContext 中加盐的字段?
如果是这样,我将如何编写自己的 userDetails 类来实现这一点?抱歉,对 Spring/Java 还是很陌生。
【问题讨论】:
-
您的问题的答案是
Yes如果盐是随机的,那么您需要将其提供给验证过程。只需像任何其他类一样编写userDetails类。 -
好的,但是我如何告诉 securityApplicationContext 使用 myCustomUserDetails 类而不是默认的 userDetails 类来存储用户?
-
你最好使用像 Bcrypt 这样包含随机盐的算法。如果你在这里和其他地方在线搜索,你会发现这种东西has already been discussed before。
-
不幸的是,我在密码加密方面受到了约束。我需要将我的应用程序与另一个组的应用程序集成,该应用程序使用随机盐 + 哈希进行加密。
-
是的,正如@Ramhound 所说,您需要与每个用户关联的盐值。您还必须实现与其他组的算法匹配的
PasswordEncoder。
标签: spring-security salt password-encryption