java - Spring Security >5.0.0 移除了 Md5PasswordEncoder

标签 java spring spring-boot spring-security

我有一个使用 Spring 安全性的 Spring 项目。我之前使用的是 Spring Boot 1.5,现在迁移到了 Spring Boot 2.0。

我注意到 Md5PasswordEncoder已在 Spring Security 的最终版本中删除。相反,即使已弃用 ( https://docs.spring.io/spring-security/site/docs/5.0.3.RELEASE/api/),Md4PasswordEncoder 仍然存在。

我应该使用外部 MD5 编码器还是将分类移动到其他地方?

最佳答案

Md5PasswordEncoder 不复存在的事实并不意味着 Spring Security 5 无法创建 MD5 哈希。为此,它使用 new MessageDigestPasswordEncoder("MD5")

有两个选项,都与新的 DelegatingPasswordEncoder 一起使用,它需要一个密码前缀来确定哈希算法,例如 {MD5}password_hash:

要么将默认密码编码器设置为MD5(大写!),因此如果密码没有前缀,则应用默认编码器:

PasswordEncoder passwordEncoder = PasswordEncoderFactories.createDelegatingPasswordEncoder();
passwordEncoder.setDefaultPasswordEncoderForMatches(new MessageDigestPasswordEncoder("MD5"));

或者{MD5}作为数据库中现有密码散列的前缀。这样,DelegatingPasswordEncoder 委托(delegate)给“MD5”哈希器。像这样的东西:

update myusertable set pwd = '{MD5}' || pwd;

关于java - Spring Security >5.0.0 移除了 Md5PasswordEncoder,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49633672/

相关文章:

java - block 级同步

java - 如何在 Jackson 的 ObjectMapper 上添加 Jdk8Module

java - 应用程序不启动 Spring Boot 1.2.1 + Spring Security + Servlet 2.5

java - 如何在 Spring Boot 中存储一个 xml 节点的多个值?

java - JSF 的 IE 自动填充问题

java - 在java中,我如何打印以下模式

java - 如何围绕实现 java.security.Principal 的类中的方法创建切面?

java - 事务回滚后,Spring 不会关闭 hibernate session

spring - FTP 出站网关委托(delegate) session 工厂性能

java - 如何将存储过程的结果映射到 spring-boot/hibernate 中的实体