Шифрование контекста приложения Spring

#java #spring #aes #applicationcontext

#java #spring #aes #applicationcontext

Вопрос:

Есть ли какой-либо способ, которым я мог бы зашифровать записи контекста приложения, например:

 <bean id="securityDataSource" class="org.springframework.jdbc.datasource.DriverManagerDataSource">
    <property name="driverClassName" value="com.mysql.jdbc.Driver"/>
    <property name="url" value="jdbc:mysql://192.168.0.1/schemaname?useUnicode=trueamp;amp;characterEncoding=utf-8"/>
    <property name="username" value="{this should be encrypted}"/>
    <property name="password" value="{this should be encrypted}"/>     
</bean> 
  

Что я хочу сделать, так это зашифровать имя пользователя и пароль.

Ответ №1:

Вам нужно будет экстернализировать свойства с помощью propertyPlaceHolder . Как только вы это сделаете, вы можете использовать Jasyptверсию property place holder, которая поддерживает шифрование.

Комментарии:

1. Здравствуйте, спасибо за информацию. Наша команда протестировала Jasypt, и это сработало. 🙂

Ответ №2:

Насколько я знаю, шифрования нет.


Но вы могли бы экстернализировать свойства или полный источник данных в контексте сервера приложений.

Ответ №3:

Вместо этого вы могли бы создать соединение jndi. В tomcat context.xml например, вы добавляете. Таким образом, вы не сохраняете никакой информации в приложении или файле свойств. Конечно, вы должны установить разрешения на context.xml …

 <Resource name="jdbc/[YourDatabaseName]" 
              auth="Container"
              type="javax.sql.DataSource" 
              username="[DatabaseUsername]" 
              password="[DatabasePassword]"
              driverClassName="com.mysql.jdbc.Driver"
              url="jdbc:mysql://[yourserver]:3306/[yourapplication]"
              maxActive="15" 
              maxIdle="3"/>