如何禁用单个组件的Jasypt自动属性解密?

时间:2019-07-10 11:47:17

标签: spring spring-boot encryption inject jasypt

在我的spring boot应用程序中,我希望jasypt解密除一个以外的所有组件中的注入属性。

我发现Jasypt自动加密/解密非常方便,但是在我的SecurityConfig中,我想获取加密的值,并在以后对其解密。

如何为一个属性或一个类禁用Jasypt解密?

@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Value("${password}")
    private String password;// <= this field will contain the decrypted password, but should contain the encrypted password
}

2 个答案:

答案 0 :(得分:1)

不使用ENC()并提供未加密的纯文本作为密码怎么样?

答案 1 :(得分:0)

有一个解决方法:将其写在application.properties中:

password=ENC_X(1234)

并在注入属性时将ENC_X替换为ENC

@EnableWebSecurity
@EnableGlobalMethodSecurity(securedEnabled = true)
public class SecurityConfig extends WebSecurityConfigurerAdapter {
    @Value("#{'${password}'.replaceFirst('^ENC_X','ENC')}")
    private String password;// <= this field will contain 'ENC(1234)' (unencrypted)
}