第 4 章 如何在 Spring Boot 中使用加密属性占位符
在保护容器时,不建议在配置文件中使用纯文本密码。避免使用纯文本密码的一种方法是尽可能使用加密属性占位符。
4.1. 关于用于加密值的 master 密码
要使用 Jasypt 加密值,需要一个 master 密码。供您或管理员选择 master 密码。Jasypt 提供了多种方式来设置 master 密码。Jasypt 可以集成到 Spring 配置框架中,以便在加载配置文件时解密属性值。其中一种方法是在 Spring 引导配置中以纯文本形式指定 master 密码。
Spring 使用 PropertyPlaceholder
框架将令牌替换为属性文件中的值,Jasypt 的方法将 PropertyPlaceholderConfigurer
类替换为可识别加密字符串并解密它们的方法。
示例
<bean id="propertyPlaceholderConfigurer" class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer"> <constructor-arg ref="configurationEncryptor" /> <property name="location" value="/WEB-INF/application.properties" /> </bean> <bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> <property name="config" ref="environmentVariablesConfiguration" /> </bean> <bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> <property name="algorithm" value="PBEWithMD5AndDES" /> <property name="password" value="myPassword" /> </bean>
您可以使用环境变量来设置 master 密码,而不是以纯文本形式指定 master 密码。在 Spring Boot 配置文件中,将这个环境变量指定为 passwordEnvName
属性的值。例如,如果您将 MASTER_PW
环境变量设置为 master 密码,则 Spring Boot 配置文件中会具有此条目:
<property name="passwordEnvName" value="MASTER_PW">