我需要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文件中的密码也必须加密。
我不知道这是否可能,但也许有人有想法?
杰森
答案 0 :(得分:2)
以编程方式而不是XML格式定义数据源,或者如果使用Spring Boot,则通过application.yaml中的配置
定义数据源无论哪种方式都将用户和密码指定为Spring Environment属性,并从Spring Cloud Config服务器填充属性,该服务器支持敏感属性的完全加密和解密。
请参阅here
或者,如果您正在使用应用服务器,请使用JNDI数据源并让应用服务器处理数据源密码安全性。