Jasypt无法使用Spring从系统环境变量解密密码

时间:2018-11-14 09:14:45

标签: java spring spring-boot jasypt

我有jasypt密码和在application.yml中定义的加密密码,如下所示:

jasypt:
  encryptor:
    password: ${secretKey}

spring:
   datasource: 
       password: ENC(${password})

并使用@Value:

@Value("${spring.datasource.password}")
private String springPassword;

我在我的环境变量中定义了secretKey和password。但是,当我启动这个春季启动应用程序时,它会引发错误:

Caused by: org.springframework.cache.Cache$ValueRetrievalException: Value for key 'spring.datasource.password' could not be loaded using 'com.ulisesbocchio.jasyptspringboot.caching.CachingDelegateEncryptablePropertySource$$Lambda$209/172678484@5ae15'

如果我对两个键都进行了硬编码,则效果很好。

任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

我知道为时已晚,但仍然如此。对我来说,将ENC()方法作为环境变量的一部分有效。

jasypt:
  encryptor:
    password: ${secretKey}

spring:
   datasource: 
       password: ${PASSWORD}

设置环境变量时

export PASSWORD=ENC(yourPassword)

答案 1 :(得分:0)

我有类似的问题。在我的情况下,原因是我在类路径上有jasypt-1.9.2.jar和jasypt-1.9.4.jar。

jasypt-1.9.4.jar来自jasypt-spring-boot 2.1.1。 jasypt-1.9.2.jar来自wss4j-ws-security-common 2.2.2。

更改为jasypt-spring-boot 2.1.0可以解决我的情况。