4.2. 在 Spring Boot 中使用 Encrypted Property Placeholders
通过使用 Jasypt,您可以为属性源提供加密,应用可以解密加密的属性并检索原始值。以下流程解释了如何加密和解密 Spring Boot 中的属性源。
流程
将
jasypt
依赖项添加到项目的pom.xml
文件中。<dependency> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-spring-boot-starter</artifactId> <version>3.0.3</version> </dependency>
将 Maven 存储库添加到项目的 pom.xml 中。
<repository> <id>jasypt-basic</id> <name>Jasypt Repository</name> <url>https://repo1.maven.org/maven2/</url> </repository>
将 Jasypt Maven 插件添加到项目中,并允许您使用 Maven 命令加密和解密。
<plugin> <groupId>com.github.ulisesbocchio</groupId> <artifactId>jasypt-maven-plugin</artifactId> <version>3.0.3</version> </plugin>
将插件存储库添加到
pom.xml
。<pluginRepository> <id>jasypt-basic</id> <name>Jasypt Repository</name> <url>https://repo1.maven.org/maven2/</url> </pluginRepository>
要加密
application.properties
文件中列出的用户名和密码,请将这些值嵌套在DEC ()
中,如下所示。spring.datasource.username=DEC(root) spring.datasource.password=DEC(Password@1)
运行以下命令来加密用户名和密码。
mvn jasypt:encrypt -Djasypt.encryptor.password=mypassword
这将
application.properties
文件中的 DEC ()占位符替换为加密值,例如:spring.datasource.username=ENC(3UtB1NhSZdVXN9xQBwkT0Gn+UxR832XP+tOOfFTlNL57FiMM7BWPRTeychVtLLhB) spring.datasource.password=ENC(4ErqElyCHjjFnqPOCZNAaTdRC7u7yJSy16UsHtVkwPIr+3zLyabNmQwwpFo7F7LU)
要解密 Spring 应用配置文件中的凭据,请运行以下命令:
mvn jasypt:decrypt -Djasypt.encryptor.password=mypassword
这会输出
application.properties
文件的内容,因为它在加密前显示。但是,这不会更新配置文件。