spring-security 加密来自www.example.com的密码application.properties

gg0vcinb  于 2022-11-11  发布在  Spring
关注(0)|答案(2)|浏览(165)

如何对来自application.properties的密码进行加密?

spring:
  security:
    user:
      name: bob
      password: alice

Spring安全性验证:

@Configuration
@EnableWebSecurity
public class BasicAuthConfig {

@Bean
public SecurityFilterChain filterChain(HttpSecurity http) throws Exception {
    http
        .authorizeRequests(authorize -> authorize
            .anyRequest().authenticated()
        )
        .httpBasic();

    return http.build();
}

//TODO: Not working
//@Bean
// public PasswordEncoder passwordEncoder() {
   //return new BCryptPasswordEncoder(10);
//}

}

我假设调用passwordEncoder()并加密密码。(编辑:如果没有,我如何访问属性password以便显式调用passwordEncoder?)但是,当我尝试使用原始密码(bob:alice)发出basic authentication请求时,它不起作用。
我得到的是401,而Spring日志是Encoded password does not look like BCrypt
如何加密我的密码,同时允许客户端使用原始凭据发出请求?

prdp8dxp

prdp8dxp1#

保留PasswordEncoder bean,并在属性中放入由编码器编码的密码(而不是原始密码)。
所以在你的情况下,像这样的东西:

spring:
  security:
    user:
      name: bob
      password: $2a$10$2T4wM24pGyHuLj12SI/rC.C1gkg4mLGTuzTse3choIVIOtlgsWmPC
nnt7mjpx

nnt7mjpx2#

取消注解密码编码器Bean。然后暂时使用密码编码器对纯文本密码进行编码。记录或打印编码后的密码。然后将应用程序属性中的密码替换为加密后的密码。可以通过调用以下方法对纯文本密码进行加密:

var encodedPassword = passwordEncoder.encode(rawPassword);

请不要忘记删除用于临时记录/打印编码密码的代码。

相关问题