通过Spring自动配置在Spring Boot应用程序中使用加密密码进行数据库连接

时间:2019-06-13 11:19:29

标签: spring-boot jasypt

尝试使用加密的数据库密码通过Spring自动配置连接到数据库

我正在使用Spring自动配置来连接数据库。为此,我在属性文件中的属性下面添加了

spring.datasource.url=jdbc:oracle:thin:@ABCDE2D.com:1888:ABCDE2D1
spring.datasource.username=user
spring.datasource.password=password
spring.datasource.driver-class-oracle.jdbc.driver.OracleDriver

在dao类中,我有@Autowired NamedParameterJdbcTemplate并直接使用它从数据库中获取数据。

  

到这里为止一切正常。

现在,我需要加密属性文件中的密码。 为此,我做了以下事情:

  
      
  1. 在pom中添加了jasypt-spring-boot-starter
  2.   
  3. 在属性文件中添加了spring.datasource.password = ENC(NoIv2c + WQYF3LenN0tDYPA ==)
  4.   
  5. 在属性文件中添加了jasypt.encryptor.password = key
  6.   

现在我遇到以下错误:

Failed to bind properties under 'spring.datasource.password' to  
java.lang.String:
Reason: Failed to bind properties under 'spring.datasource.password' to   
java.lang.String

3 个答案:

答案 0 :(得分:3)

我提供了一些基本指导,如下所示。

您需要在属性文件中添加以下两个参数,以使应用程序正常工作。这是假设您正在使用默认加密算法进行加密。如果您正在使用其他打印机,请确保进行相应的更改。

jasypt.encryptor.iv-generator-classname = org.jasypt.iv.NoIvGenerator jasypt.encryptor.algorithm = PBEWithMD5AndDES

您可以参考更多详细信息 https://nirmalbalasooriya.blogspot.com/2020/02/spring-boot-property-encryption-using.html

答案 1 :(得分:0)

在我的情况下,我输入了错误的jasypt.encryptor.password。 例如,下面给出的示例是我在application.properties中设置的属性:

jasypt.encryptor.password=abc

而不是abc,我在加密密码时给了jasypt作为我的秘密密钥,所以加密的密码是错误的。然后抛出此错误。 后来我意识到并发现密钥不正确。 然后输入正确的密钥,即abc,然后对我有用。 愚蠢的错误,但这花了我4个小时。希望对其他人有用。

答案 2 :(得分:0)

如果您使用 jasypt 依赖项,请确保:

spring.datasource.password = Enc

jasypt.encryptor.password = key

其中 Enc 是加密密码,key 是您用来生成加密密码的密钥。