[ 
https://issues.apache.org/jira/browse/CAMEL-7849?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14487347#comment-14487347
 ] 

Willem Jiang commented on CAMEL-7849:
-------------------------------------

After writing a simple test case, I found I made a mistake that 
BridgePropertyPlaceholderConfigurer doesn't know anything about the palceholder 
outside of the camel context. It turns out the 
BridgePropertyPlaceholderConfigurer doesn't override the method of String 
resolvePlaceholder(String placeholder, Properties props) to apply the parser 
setting of the BridgePropertyPlaceholderConfigurer. 

I will commit a quick fix of it shortly.


> Encrypted properties inside and outside <camelContext>
> ------------------------------------------------------
>
>                 Key: CAMEL-7849
>                 URL: https://issues.apache.org/jira/browse/CAMEL-7849
>             Project: Camel
>          Issue Type: Bug
>    Affects Versions: 2.13.2, 2.14.0
>            Reporter: Camel Guy
>            Assignee: Willem Jiang
>            Priority: Minor
>             Fix For: 2.14.3, 2.15.2, 2.16.0
>
>
> {noformat}
> File default.properties contains an entry like: key=ENC(..)
> The following Camel Spring DSL snippet decrypts the 
> property value inside <camelContext> via {{key}} but does 
> not decrypt it outside of the <camelContext> via ${key}:
> <bean id="jasypt" 
> class="org.apache.camel.component.jasypt.JasyptPropertiesParser">
>     <property name="password" value="sysenv:PROPERTIES_KEY"/>
> </bean>
> <bean id="bridgePropertyPlaceholder" class=
>   "org.apache.camel.spring.spi.BridgePropertyPlaceholderConfigurer">
>   <property name="locations" >
>   <list>
>     <value>classpath:default.properties</value>
>   </list></property>
>   <property name='parser' ref='jasypt'/>
> </bean>
> In order to get ${} to decrypt, first I remove all of the above. 
> Then I add jasypt dependencies to pom.xml:
> <dependency>
>   <groupId>org.jasypt</groupId>
>   <artifactId>jasypt</artifactId>
>   <classifier>lite</classifier>
>   <version>1.9.2</version>
> </dependency>
>  <dependency>
>   <groupId>org.jasypt</groupId>
>   <artifactId>jasypt-spring3</artifactId>
>   <version>1.9.2</version>
>  </dependency> 
> And add the following to Camel Spring DSL:
> <bean id="environmentVariablesConfiguration"
>      class="org.jasypt.encryption.pbe.config.EnvironmentStringPBEConfig">
>    <property name="algorithm" value="PBEWithMD5AndDES" />
>    <property name="passwordEnvName" value="PROPERTIES_KEY" />
>  </bean>
>  <bean id="configurationEncryptor"
>      class="org.jasypt.encryption.pbe.StandardPBEStringEncryptor">
>    <property name="config" ref="environmentVariablesConfiguration" />
> </bean>
> <bean id="propertyConfigurer" class=
>   'org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer'>
>  <constructor-arg ref="configurationEncryptor"/>
>    <property name="locations" >
>   <list>
>     <value>classpath:default.properties</value>
>   </list></property>
> </bean>
> <bean id="jasypt" class=
>   "org.apache.camel.component.jasypt.JasyptPropertiesParser">
>     <property name="password" value="sysenv:PROPERTIES_KEY"/>
> </bean>
> <!-- And inside the camelContext... -->
> <camelContext xmlns="http://camel.apache.org/schema/spring";>
> <propertyPlaceholder id="properties"
>  propertiesParserRef="jasypt" 
>  location="classpath:default.properties"/> 
> This is the only solution that I could discover. Using 
> BridgePropertyPlaceholder 
> didn't work. <propertyPlaceholder> must be used inside <camelContext>.
> {noformat}



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to