2017-02-20 3 views
1

Я нахожусь в проекте, где некоторые разработчики могут читать зашифрованные свойства, а некоторые нет. Мне нужно что-то вродеMaven encrypt properties

<properties> 
    <database.password>someHash</database.password> 
</property> 

, а затем в файле конфигурации с помощью фильтрации, я хотел бы иметь (@ связано с весны Ботинок):

[email protected]@ 

Файл свойств будет во время компиляции компилируется в:

password=superSecretPassword 

Я думал, что Maven Password Encryption бы помочь, но после некоторых попыток, я не могу управлять, чтобы работать, как он. Я также нашел Properties maven plugin, но также не имел никакого успеха для достижения желаемого решения.

У вас есть какой-то подход, как хранить зашифрованные свойства в pom.xml и затем расшифровывать их во время компиляции после ввода некоторого пароля?

+3

Прежде всего, почему вы храните пароли в POM? Это никогда не должно происходить, зашифровано или нет. – Tunaki

ответ

1

Как @Tunaki point out, вам следует избегать использования паролей в вашем pom или в любом месте исходного кода. Одним из способов получения зашифрованных учетных данных является создание пользовательской реализации Springs PropertySourcesPlaceholderConfigurer.

Затем вы можете переопределить postProcessBeanFactory() для выполнения шифрования/дешифрования ваших файлов свойств учетных данных. Во время дешифрования вы можете просто вызвать setProperties() с дешифрованными значениями свойств. В вашей конфигурации с пружиной вы использовали бы заполнители свойств, а не значения свойств текстового текста.

Обратите внимание, что вам нужно использовать схему двустороннего шифрования, а не дайджест сообщений (или хеш-функцию), поскольку вам необходимо восстановить учетные данные простого текста, чтобы создать соединения с базой данных.

Смежные вопросы