将加密属性传递给spring上下文

时间:2012-01-19 20:48:51

标签: spring encryption properties system

我从未见过这个,但我想知道是否有人遇到过。拥有一个访问数据库的Web服务器。我想传递加密的数据库密码,并在设置数据源之前使用spring上下文对其进行解密。我知道Spring安全性可以做一些事情,比如在Web服务器中使用salt文件等。

这里的挑战是我不想向Web服务器团队提供明确的用户,密码和URL。只是一个加密的密码,并在使用前解密弹簧。

有没有这样的东西?我知道我可以编写代码,但它已经完成了吗?

由于

3 个答案:

答案 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)

请注意,数据库密码是加密的(实际上,任何其他属性也可以加密,无论是否与数据库配置相关)。

更多信息:

http://www.jasypt.org/encrypting-configuration.html

答案 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
  1. 加密db.Properties

      ##password=cGFzc3dvcmQ=
      password=cm9vdA==
    
  2. 数据源的spring bean配置如下所示 (这里你可以只使用密码部分)

    1. 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="]" /&gt;  
        </bean> 
      
    2. 等等..请参阅给定的链接以获取更多信息..