如何对来自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
。
如何加密我的密码,同时允许客户端使用原始凭据发出请求?
2条答案
按热度按时间prdp8dxp1#
保留PasswordEncoder bean,并在属性中放入由编码器编码的密码(而不是原始密码)。
所以在你的情况下,像这样的东西:
nnt7mjpx2#
取消注解密码编码器Bean。然后暂时使用密码编码器对纯文本密码进行编码。记录或打印编码后的密码。然后将应用程序属性中的密码替换为加密后的密码。可以通过调用以下方法对纯文本密码进行加密:
请不要忘记删除用于临时记录/打印编码密码的代码。