第 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">
Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.