It does.
The unit test works properly.
It's only when I integrate this into a web app, I start seeing issues. I am
not sure why. All the spring dependencies are common between junit's
classpath and web app's classpath

Andy,
I am currently trying the SignaturePropRefId option. I have written a class
that does exactly what you mentioned.
I will let you know how it goes. I was more inclined to extend the
interceptor with future needs in mind. But I fell your approach is more
clean and easy.

Thank you so much Colm and Andy.

Thanks,
Giriraj.


On Thu, Apr 24, 2014 at 6:34 PM, Colm O hEigeartaigh <[email protected]>wrote:

> Does your new interceptor have a constructor that takes a Map<String,
> Object>? I modified a system test to use a subclass of WSS4JOutInterceptor
> which just had an empty constructor + a constructor with Map<String,
> Object> which called super in both cases, and it worked ok.
>
> Colm.
>
>
> On Thu, Apr 24, 2014 at 7:35 PM, Giriraj Bhojak <[email protected]>
> wrote:
>
> > Here is the working config:
> >
> > <beans xmlns="http://www.springframework.org/schema/beans";
> >     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; xmlns:jaxws="
> > http://cxf.apache.org/jaxws";
> >     xmlns:util="http://www.springframework.org/schema/util"; xmlns:cxf="
> > http://cxf.apache.org/core";
> >     xsi:schemaLocation=" http://www.springframework.org/schema/beans
> > http://www.springframework.org/schema/beans/spring-beans.xsd
> >     http://cxf.apache.org/jaxws http://cxf.apache.org/schemas/jaxws.xsd
> >     http://www.springframework.org/schema/util
> > http://www.springframework.org/schema/util/spring-util.xsd
> >     http://cxf.apache.org/core http://cxf.apache.org/schemas/core.xsd";>
> >
> >
> >     <import resource="classpath:META-INF/cxf/cxf.xml" />
> >     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> >
> >     <import resource="classpath:META-INF/cxf/cxf.xml" />
> >     <import resource="classpath:META-INF/cxf/cxf-servlet.xml" />
> >
> > <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"
> >         id="outInterceptor" >
> >         <constructor-arg>
> >             <map>
> >                 <entry key="action" value="Timestamp Signature Encrypt"
> />
> >                 <entry key="user" value="client" />
> >                 <entry key="signaturePropFile"
> value="keystore.properties"
> > />
> >                 <entry key="encryptionPropFile"
> value="keystore.properties"
> > />
> >                 <entry key="encryptionUser" value="user" />
> >                 <entry key="passwordCallbackClass"
> >                     value="PasswordCallback" />
> >                 <entry key="signatureParts"
> >                     value="{Element}{
> >
> >
> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd}Timestamp;{Element}{http://schemas.xmlsoap.org/soap/envelope/}Body
> > "
> > />
> >                 <entry key="encryptionParts"
> >                     value="{Element}{
> >
> >
> http://www.w3.org/2000/09/xmldsig#}Signature;{Content}{http://schemas.xmlsoap.org/soap/envelope/}Body
> > "
> > />
> >                 <entry key="encryptionSymAlgorithm" value="
> > http://www.w3.org/2001/04/xmlenc#aes128-cbc"; />
> >                 <entry key="encryptionKeyTransportAlgorithm" value="
> > http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"; />
> >                 <entry key="signatureAlgorithm" value="
> > http://www.w3.org/2000/09/xmldsig#rsa-sha1"; />
> >                 <entry key="isBSPCompliant" value="false" />
> >             </map>
> >         </constructor-arg>
> >     </bean>
> >
> >     <bean class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor"
> >         id="ininterceptor">
> >         <constructor-arg>
> >             <map>
> >                 <entry key="action" value="Timestamp Signature Encrypt"
> />
> >                 <entry key="signaturePropFile"
> value="keystore.properties"
> > />
> >                 <entry key="decryptionPropFile"
> value="keystore.properties"
> > />
> >                 <entry key="passwordCallbackClass"
> >                     value="PasswordCallback" />
> >                 <entry key="encryptionKeyTransportAlgorithm" value="
> > http://www.w3.org/2001/04/xmlenc#rsa-oaep-mgf1p"; />
> >                 <entry key="signatureAlgorithm" value="
> > http://www.w3.org/2000/09/xmldsig#rsa-sha1"; />
> >             </map>
> >         </constructor-arg>
> >     </bean>
> >     <bean id="logInbound"
> > class="org.apache.cxf.interceptor.LoggingInInterceptor">
> >     </bean>
> >     <bean id="logOutbound"
> > class="org.apache.cxf.interceptor.LoggingOutInterceptor">
> >     </bean>
> >     <cxf:bus>
> >         <cxf:inInterceptors>
> >             <ref bean="logInbound" />
> >         </cxf:inInterceptors>
> >         <cxf:outInterceptors>
> >             <ref bean="logOutbound" />
> >         </cxf:outInterceptors>
> >         <cxf:outFaultInterceptors>
> >             <ref bean="logOutbound" />
> >         </cxf:outFaultInterceptors>
> >         <cxf:inFaultInterceptors>
> >             <ref bean="logInbound" />
> >         </cxf:inFaultInterceptors>
> >     </cxf:bus>
> > </beans>
> >
> >
> > The only change I made that led to error is using a different class for
> the
> > bean with id 'outInterceptor'.
> > The new class simply extends
> > org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor and overrides
> > loadCrypto(String, String, RequestData)
> > Basically I am trying to extend Merlin implementation in order to use
> > encrypted properties for keystore.
> > When I start the application, I get classcast exceptions due to
> > classloader(that's what I believe).
> > So defining a new merlin implementation via keystore.properties does not
> > help.
> > Hence I have been trying to inject the new merlin impl by overriding
> > loadCrypto.
> >
> > Could you please help me figure out what's wrong?
> >
> > Thanks,
> > Giriraj.
> >
> >
> > On Thu, Apr 24, 2014 at 2:17 PM, Colm O hEigeartaigh <
> [email protected]
> > >wrote:
> >
> > > I don't quite follow. Could you paste your entire spring config please?
> > >
> > > Colm.
> > >
> > >
> > > On Thu, Apr 24, 2014 at 7:08 PM, Giriraj Bhojak <[email protected]>
> > > wrote:
> > >
> > > > Hello,
> > > >
> > > > I am running into a problem if I extend the
> > > > org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor via spring
> beans.
> > > >
> > > > I have a bean definition defined as(haven't shown complete <bean>
> > > > definition) :
> > > > <bean class="org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor"
> > > >         id="interceptor" >
> > > >         <constructor-arg>
> > > >             <map>
> > > >                 <entry key="action" value="Encrypt" />
> > > > .............................................................
> > > >
> > > > I need to extend WSS4JOutInterceptor to provide some customized
> > behavior
> > > > for crypto properties.
> > > > But when I do that and use the new class in the above bean
> definition,
> > I
> > > > get following:
> > > >
> > > > java.lang.IllegalStateException: Cannot convert value of type
> > > > [NewOutInterceptor] to required type
> > > > [org.apache.cxf.interceptor.Interceptor] for property
> > > 'outInterceptors[0]':
> > > > no matching editors or conversion strategy found.
> > > >
> > > > I am on version 2.7.8 of cxf-rt-ws-security-2.7.8.
> > > > Could anyone please help me with it?
> > > >
> > > > Thanks,
> > > > Giriraj.
> > > >
> > >
> > >
> > >
> > > --
> > > Colm O hEigeartaigh
> > >
> > > Talend Community Coder
> > > http://coders.talend.com
> > >
> >
>
>
>
> --
> Colm O hEigeartaigh
>
> Talend Community Coder
> http://coders.talend.com
>

Reply via email to