Hi,
I did what you said and it worked perfectly,
Thanks!

On 17 January 2013 11:25, Andrei Shakirin <[email protected]> wrote:

> Hi,
>
> > -----Original Message-----
> > From: Martin Steffen Correa [mailto:[email protected]]
> > Sent: Mittwoch, 16. Januar 2013 22:00
> > To: [email protected]
> > Subject: Re: WS-Security: How to insert two Security elements in SOAP
> > header?
> >
> > Hi Glen,
> >
> > Thanks for your help,
> > I read your posts 52 and 53,
> > but i dont want to manually create the Security element (and
> > UsernameToken element), because this is already implemented in actions
> > (e.g.
> > org.apache.ws.security.action.UsernameTokenAction).
> > Therefore, I inspected the cxf code and, I find that is not allowed to
> define
> > two interceptors with the same id in the same phase.
> > In the class org.apache.cxf.phase.PhaseInterceptorChain (
> > http://svn.apache.org/viewvc/cxf/tags/cxf-
> > 2.7.2/api/src/main/java/org/apache/cxf/phase/PhaseInterceptorChain.java?
> > revision=1429139&view=markup)
> > in the insertInterceptor method, see:
> > if (!force && cmpId.equals(id)) {
> >     // interceptor is already in chain
> >     return;
> > }
> >
> > This means that I can not have two WSS4JOutInterceptor in the chain.
> > Due to the above,
> > I implemented the class: MyWSSecurityInterceptor (
> > https://github.com/martins1930/samples/blob/master/gradle/WSCxf/WSCli
> > ent/src/main/java/org/apache/cxf/ws/security/wss4j/uy/MyWSSecurityInte
> > rceptor.java)
> > This class is a copy of
> org.apache.cxf.ws.security.wss4j.WSS4JOutInterceptor
> > ,
> > except that MyWSSecurityInterceptor always returns a different ID
> > (overwrote the method getId()).
> > With this change, you can include multiple MyWSSecurityInterceptor in the
> > chain, as you can see in my Spring conf:
> > https://github.com/martins1930/samples/blob/master/gradle/WSCxf/WSCli
> > ent/src/main/resources/client-bean.xml
> > .
> >
> > I think that would be nice,
> > that cxf team modify WSS4JOutInterceptor class to return a different ID
> each
> > time.
> > In this way support multiple WSS4JOutInterceptor in a chain.
>
> I do not think that it is good idea to update WSS4JOutInterceptor in a way
> to add multiple instances into chain, because it breaks a lot of existing
> code that rely on fact that WSS4JOutInterceptor can be added only once.
>
> However you can subclass WSS4JOutInterceptor, override getId() method and
> add other constructor:
>
>     public CustomWSS4JOutInterceptor(boolean uniqueId) {
>         super();
>         id = getClass().getName();
>         if (uniqueId) {
>             id += System.identityHashCode(this);
>         }
>   }
>
> It allows to add multiple interceptor instances into chain.
>
> Andrei.
>
>
> >
> > Martín.
> >
> >
> >
> >
> > On 15 January 2013 21:00, Glen Mazza <[email protected]> wrote:
> >
> > > If you're doing UsernameToken you might be able to manually create the
> > > headers (it's possible they won't be too complex):  Links #52 and #53
> here:
> > >
> > http://www.jroller.com/gmazza/**entry/blog_article_index<http://www.jr
> > oller.com/gmazza/entry/blog_article_index>, in particular the links at
> the
> > bottom of #53, provide additional options.
> > >
> > > Glen
> > >
> > >
> > > On 01/15/2013 04:19 PM, Martin Steffen Correa wrote:
> > >
> > >> Hello,
> > >>
> > >> I'm new to CXF and I want to create a SOAP message with two Security
> > >> elements as follow:
> > >>
> > >> <soap:Header>
> > >>      <wsse:Security soap:actor="actor1" >
> > >>          ...
> > >>      </wsse:Security>
> > >>      <wsse:Security soap:actor="actor2" >
> > >>          ...
> > >>      </wsse:Security>
> > >> </soap:Header>
> > >>
> > >> How I can generate a message with two Security elements in SOAP
> > header?
> > >>
> > >> I configure my client with Spring:
> > >> <jaxws:client id="helloClient">
> > >>      <jaxws:outInterceptors>
> > >>          <ref bean="ut_actor1" />
> > >>          <ref bean="ut_actor2" />
> > >>      </jaxws:outInterceptors>
> > >> </jaxws:client>
> > >>
> > >> Both ut_actor1 and ut_actor2 are
> > >> org.apache.cxf.ws.security.**wss4j.WSS4JOutInterceptor interceptors,
> > >> but only one interceptor is executed, it seems that is not possible
> > >> to define two interceptors of the same type.
> > >>
> > >> Thanks,
> > >> Martin Steffen.
> > >>
> > >>
> > >
> > > --
> > > Glen Mazza
> > > Talend Community Coders - coders.talend.com
> > > blog: www.jroller.com/gmazza
> > >
> > >
>

Reply via email to