You are viewing a plain text version of this content. The canonical link for it is here.
Posted to issues@camel.apache.org by "Willem Jiang (JIRA)" <ji...@apache.org> on 2014/09/23 04:19:33 UTC

[jira] [Commented] (CAMEL-7849) Encrypted properties inside and outside

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

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

As the Spring doesn't  provide the nice parser API for camel to use, we end up to implement our own property component to handle the same use case as we meet in spring. BridgePropertyPlaceholderConfigurer just work as the org.jasypt.spring3.properties.EncryptablePropertyPlaceholderConfigurer, they are just injected into Spring as a customer configure parser.  Because they don't know each other, it is not surprise me that they cannot work together.


> 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
>            Priority: Minor
>
> File default.properties contains an entry like: key=ENC(..)
> The following decrypts the property value inside <camelContext> 
> via \{ \{key\} \} but does not decrypt it outside of the <camelContext> via ${key}:
> {code}
> <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>
> {code}
> In order to get ${} to decrypt, I first add jasypt dependencies:
> {code}
> <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> 
> {code}
> Camel Spring DSL looks like:
> {code}
> <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"/> 
> {code}
> The second example is the only solution I could find. Using BridgePropertyPlaceholder 
> did not work, so I had to to use <propertyPlaceholder> inside <camelContext>.



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