Передача зашифрованных свойств в контекст Spring - PullRequest
2 голосов
/ 20 января 2012

Я никогда не видел этого, но мне интересно, если кто-нибудь сталкивался.Наличие веб-сервера, который обращается к базе данных.Я хочу передать пароль базы данных в зашифрованном виде и иметь пружинный контекст, расшифровывающий его перед настройкой источника данных.Я знаю, что Spring Security может сделать что-то подобное, например, использовать солт-файл на веб-сервере и т. Д.

Проблема здесь в том, что я не хочу давать в Интернете понятного пользователя, пароль, URLсерверная команда.Просто зашифрованный пароль и расшифруйте пружину перед его использованием.

Уже есть что-то подобное?Я знаю, что могу что-то кодировать, но это уже сделано?

Спасибо

Ответы [ 3 ]

5 голосов
/ 26 мая 2014

Используя объект 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 голос
/ 20 января 2012

Я действительно нашел именно то, что искал в этой теме:

Как использовать зашифрованный пароль в apache BasicDataSource? Вот подробности из jasyp http://www.jasypt.org/spring3.html

0 голосов
/ 11 апреля 2014

Эта проблема и ее решение объясняются здесь .. ( ссылка )

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. Шифрование базы данных. Свойства

      ##password=cGFzc3dvcmQ=
      password=cm9vdA==
    

Конфигурация Spring Beans для источника данных будет выглядеть следующим образом (здесь вы можете использовать только парольную часть)

  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> 
    

И так далее .. пожалуйста, обратитесь к данной ссылке для получения дополнительной информации ..

...