我从未见过这个,但我想知道是否有人遇到过。拥有一个访问数据库的Web服务器。我想传递加密的数据库密码,并在设置数据源之前使用spring上下文对其进行解密。我知道Spring安全性可以做一些事情,比如在Web服务器中使用salt文件等。
这里的挑战是我不想向Web服务器团队提供明确的用户,密码和URL。只是一个加密的密码,并在使用前解密弹簧。
有没有这样的东西?我知道我可以编写代码,但它已经完成了吗?
由于
答案 0 :(得分:5)
通过使用org.jasypt.properties.EncryptableProperties对象,应用程序将能够正确读取和使用.properties文件,如下所示:
datasource.driver=com.mysql.jdbc.Driver
datasource.url=jdbc:mysql://localhost/reportsdb
datasource.username=reportsUser
datasource.password=ENC(G6N718UuyPE5bHyWKyuLQSm02auQPUtm)
请注意,数据库密码是加密的(实际上,任何其他属性也可以加密,无论是否与数据库配置相关)。
更多信息:
答案 1 :(得分:1)
我确实找到了我在这个主题中寻找的内容:
How to use encrypted password in apache BasicDataSource? 以下是jasyp http://www.jasypt.org/spring3.html
的详细信息答案 2 :(得分:0)
这里解释了这个问题及其解决方案..(link)
db.Properties。
#driverClassName=oracle.jdbc.driver.OracleDriver
#url=jdbc:oracle:thin:@localhost:1521:XE
#username=ITEM_INVENTORY
driverClassName=com.mysql.jdbc.Driver
url=jdbc:mysql://localhost:3306/ITEM_INVENTORY?zeroDateTimeBehavior=convertToNull
username=root
加密db.Properties
##password=cGFzc3dvcmQ=
password=cm9vdA==
数据源的spring bean配置如下所示 (这里你可以只使用密码部分)
spring-beans.xml
<bean id="dataSource" destroy-method="close" class="org.apache.commons.dbcp.BasicDataSource">
<property name="driverClassName" value="db#[driverClassName]" />
<property name="url" value="db#[url]" />
<property name="username" value="db#[username]" />
<property name="password" value="encryptedDb#[password]" />
</bean>
<bean id="dbPropertyPlaceholder" class="org.springframework.beans.factory.config.PropertyPlaceholderConfigurer">
<property name="locations">
<list>
<value>classpath:db.properties</value>
</list>
</property>
<property name="placeholderPrefix" value="db#[" />
<property name="placeholderSuffix" value="]" />
</bean>
<bean id="encryptedDbPropertyPlaceholder" class="com.inventory.api.util.DecryptPropertyConfigurer">
<property name="locations">
<list>
<value>classpath:encryped_db.properties</value>
</list>
</property>
<property name="placeholderPrefix" value="encryptedDb#[" />
<property name="placeholderSuffix" value="]" />
</bean>
等等..请参阅给定的链接以获取更多信息..