2015-07-23 2 views
0

У меня есть этот файл свойств:jasypt заполнителем свойство не работает

secret.key = ENC(foobar) 
region = ABC 

Тогда в config.xml:

<spring:beans> 

    <encryption:encryptor-config id="eConf" password-sys-property-name="MULE_ENCRYPTION_PASSWORD" algorithm="PBEWithMD5AndDES" password="" /> 
    <encryption:string-encryptor id="stringEnc" config-bean="eConf" /> 
    <encryption:encryptable-property-placeholder encryptor="stringEnc" location="${env}.properties" /> 

</spring:beans> 

Но заполнители собственности не работают, например:

<sqs:config secretKey="${secret.key}" region="${region}"></sqs-config> 

Кто-нибудь знает почему?

ответ

3

Зашифрованный пароль должен быть записан в функции ENC() и должен быть зашифрован.

Давайте рассмотрим свойства файла, где значение пароля Вход @ 123 ... Теперь зашифрованное значение в свойствах файла будет: -

password=ENC(B0u7D8wLwq/ugin31KNpP78gBcLP7VIN) 

Step1: - Мы можем генерировать ключ, используя следующие команды Командная строка из \ jasypt-1.9.2 каталог \ Bin: - encrypt input="[email protected]" password=sqlpassword algorithm=PBEWithMD5AndDES

Step2: - в среде выполнения, мы должны дать (справа Нажать на> Run As-> Run Конфигурация-> Environment): - Переменная: - MULE_ENCRYPTION_PASSWORD и значение: -sqlpassword

В вашей Mule конфигурации, вам необходимо настроить его следующим образом: -

<spring:beans> 
     <spring:bean id="environmentVariablesConfiguration" class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig"> 
      <spring:property name="algorithm" value="PBEWithMD5AndDES"/> 
      <spring:property name="passwordEnvName" value="MULE_ENCRYPTION_PASSWORD"/> 
     </spring:bean> 

     <!-- The will be the encryptor used for decrypting configuration values. --> 
     <spring:bean id="configurationEncryptor" class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor"> 
      <spring:property name="config" ref="environmentVariablesConfiguration"/> 
     </spring:bean> 

     <!-- The EncryptablePropertyPlaceholderConfigurer will read the --> 
     <!-- .properties files and make their values accessible as ${var} --> 
     <!-- Our "configurationEncryptor" bean (which implements --> 
     <!-- org.jasypt.encryption.StringEncryptor) is set as a constructor arg. --> 

     <spring:bean id="propertyConfigurer" class="org.jasypt.spring.properties.EncryptablePropertyPlaceholderConfigurer"> 
      <spring:constructor-arg ref="configurationEncryptor"/> 
      <spring:property name="locations"> 
       <spring:list> 
        <spring:value>conf/yourPropertyFile.properties</spring:value> 
       </spring:list> 
      </spring:property> 
     </spring:bean> 

Затем вы можете использовать зашифрованные значения, как: - ${password}

Ссылка: - http://blogs.mulesoft.org/encrypting-passwords-in-mule/
и http://pragmaticintegrator.wordpress.com/2014/03/09/using-encrypted-passwords-with-mule-esb/
и https://code.google.com/p/soi-toolkit/issues/detail?id=183
и http://soi-toolkit.googlecode.com/svn-history/r2022/wiki/UG_PropertyFile.wiki

+0

Благодарим вас за подробный ответ :) Я поместил зашифрованную строку. Оказывается, Anypoint Studio не поддерживает чтение заполнителя, если я использую Jasypt (не знаю почему). – BPm

+0

Вы прочитали шаг 2? –

+0

Да, я сделал. По моему мнению, это по сути то же самое, что я делаю с ''. Я все равно пробовал ваш подход и не работал. – BPm

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