如何安全地外化Spring应用程序上下文使用的用户名和密码

时间:2017-02-01 12:30:15

标签: java spring

我需要SECUREELY外部化一些集成测试所使用的Spring应用程序上下文的用户名和密码(对于我的应用程序本身,我使用JNDI)。

这个想法是这样的:

application.properties 应用/

然后我的spring应用程序上下文数据源bean看起来像这样:

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver" />
    <property name="url" value="jdbc:mysql://localhost/my_database" />
    <property name="username" value="${application.username}" />
    <property name="password" value="${application.password}" />
    <property name="initialSize" value="3" />
    <property name="maxActive" value="10" />
  </bean>

诀窍是.properties文件中的密码也必须加密。

我不知道这是否可能,但也许有人有想法?

杰森

1 个答案:

答案 0 :(得分:2)

以编程方式而不是XML格式定义数据源,或者如果使用Spring Boot,则通过application.yaml中的配置

定义数据源

无论哪种方式都将用户和密码指定为Spring Environment属性,并从Spring Cloud Config服务器填充属性,该服务器支持敏感属性的完全加密和解密。

请参阅here

或者,如果您正在使用应用服务器,请使用JNDI数据源并让应用服务器处理数据源密码安全性。