4.2. 在 Spring Boot 中使用 Encrypted Property Placeholders

通过使用 Jasypt,您可以为属性源提供加密,应用可以解密加密的属性并检索原始值。以下流程解释了如何加密和解密 Spring Boot 中的属性源。

流程

  1. jasypt 依赖项添加到项目的 pom.xml 文件中。

    <dependency>
        <groupId>com.github.ulisesbocchio</groupId>
        <artifactId>jasypt-spring-boot-starter</artifactId>
        <version>3.0.3</version>
    </dependency>
  2. 将 Maven 存储库添加到项目的 pom.xml 中。

    <repository>
    <id>jasypt-basic</id>
    <name>Jasypt Repository</name>
    <url>https://repo1.maven.org/maven2/</url>
    </repository>
  3. 将 Jasypt Maven 插件添加到项目中,并允许您使用 Maven 命令加密和解密。

    <plugin>
       <groupId>com.github.ulisesbocchio</groupId>
       <artifactId>jasypt-maven-plugin</artifactId>
       <version>3.0.3</version>
     </plugin>
  4. 将插件存储库添加到 pom.xml

    <pluginRepository>
       <id>jasypt-basic</id>
       <name>Jasypt Repository</name>
       <url>https://repo1.maven.org/maven2/</url>
    </pluginRepository>
  5. 要加密 application.properties 文件中列出的用户名和密码,请将这些值嵌套在 DEC () 中,如下所示。

    spring.datasource.username=DEC(root)
    spring.datasource.password=DEC(Password@1)
  6. 运行以下命令来加密用户名和密码。

    mvn jasypt:encrypt -Djasypt.encryptor.password=mypassword

    这将 application.properties 文件中的 DEC ()占位符替换为加密值,例如:

    spring.datasource.username=ENC(3UtB1NhSZdVXN9xQBwkT0Gn+UxR832XP+tOOfFTlNL57FiMM7BWPRTeychVtLLhB)
    spring.datasource.password=ENC(4ErqElyCHjjFnqPOCZNAaTdRC7u7yJSy16UsHtVkwPIr+3zLyabNmQwwpFo7F7LU)
  7. 要解密 Spring 应用配置文件中的凭据,请运行以下命令:

    mvn jasypt:decrypt -Djasypt.encryptor.password=mypassword

    这会输出 application.properties 文件的内容,因为它在加密前显示。但是,这不会更新配置文件。