OK, this issue also discussed on camel mailing list,  it's camel-cxf specific 
function kick in and change the behavior, [1] just for a better track

[1]http://camel.465427.n5.nabble.com/Issue-using-camel-cxf-and-wss4j-td5725191.html
-------------
Freeman(Yue) Fang

Red Hat, Inc. 
FuseSource is now part of Red Hat
Web: http://fusesource.com | http://www.redhat.com/
Twitter: freemanfang
Blog: http://freemanfang.blogspot.com
http://blog.sina.com.cn/u/1473905042
weibo: @Freeman小屋

On 2013-1-10, at 下午3:49, Freeman Fang wrote:

> Hi Christian,
> 
> We have the doc here [1] about the ws-security configuration.
> 
> And I spoke too fast, missing SAAJInInterceptor isn't the reason, I rechecked 
> the code, now WSS4JInInterceptor can pull in SAAJInInterceptor automatically.
> Most likely it's a camel-cxf specific issue
> 
> [1]http://cxf.apache.org/docs/ws-security.html
> -------------
> Freeman(Yue) Fang
> 
> Red Hat, Inc. 
> FuseSource is now part of Red Hat
> Web: http://fusesource.com | http://www.redhat.com/
> Twitter: freemanfang
> Blog: http://freemanfang.blogspot.com
> http://blog.sina.com.cn/u/1473905042
> weibo: @Freeman小屋
> 
> On 2013-1-10, at 下午3:12, Christian Müller wrote:
> 
>> Is this documented somewhere?
>> 
>> Best,
>> Christian
>> Am 10.01.2013 06:14 schrieb "Freeman Fang" <freeman.f...@gmail.com>:
>> 
>>> Hi Charles,
>>> 
>>> Please also add org.apache.cxf.binding.soap.saaj.SAAJInInterceptor
>>> for <cxf:inInterceptors>
>>> -------------
>>> Freeman(Yue) Fang
>>> 
>>> Red Hat, Inc.
>>> FuseSource is now part of Red Hat
>>> Web: http://fusesource.com | http://www.redhat.com/
>>> Twitter: freemanfang
>>> Blog: http://freemanfang.blogspot.com
>>> http://blog.sina.com.cn/u/1473905042
>>> weibo: @Freeman小屋
>>> 
>>> On 2013-1-10, at 上午3:30, Charles Moulliard wrote:
>>> 
>>>> Hi,
>>>> 
>>>> When I try to authenticate an HTTP request using WS-Security with
>>> camel-cxf
>>>> & wss4j interceptor, I get the following error :
>>>> 
>>>> qtp370155726-26 DEBUG
>>> [org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor]
>>>> - WSS4JInInterceptor: enter handleMessage()
>>>> qtp370155726-26 WARN
>>> [org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor]
>>>> - Security processing failed (actions mismatch)
>>>> qtp370155726-26 WARN
>>> [org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor]
>>>> -
>>>> org.apache.ws.security.WSSecurityException: An error was discovered
>>>> processing the <wsse:Security> header
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.checkActions(WSS4JInInterceptor.java:383)
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:333)
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:97)
>>>> at
>>>> 
>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
>>>> at
>>>> 
>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>>> at
>>>> 
>>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:348)
>>>> at
>>>> 
>>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:312)
>>>> at
>>>> 
>>> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:943)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:879)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
>>>> at org.eclipse.jetty.server.Server.handle(Server.java:349)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:936)
>>>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)
>>>> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
>>>> at
>>>> 
>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
>>>> at
>>>> 
>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
>>>> at
>>>> 
>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
>>>> at
>>>> 
>>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
>>>> at java.lang.Thread.run(Thread.java:722)
>>>> qtp370155726-26 WARN [org.apache.cxf.phase.PhaseInterceptorChain] -
>>>> Interceptor for {http://training.fusesource.com/}CustomerServiceServicehas
>>>> thrown exception, unwinding now
>>>> org.apache.cxf.binding.soap.SoapFault: An error was discovered processing
>>>> the <wsse:Security> header
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.createSoapFault(WSS4JInInterceptor.java:804)
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:357)
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:97)
>>>> at
>>>> 
>>> org.apache.cxf.phase.PhaseInterceptorChain.doIntercept(PhaseInterceptorChain.java:262)
>>>> at
>>>> 
>>> org.apache.cxf.transport.ChainInitiationObserver.onMessage(ChainInitiationObserver.java:121)
>>>> at
>>>> 
>>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.serviceRequest(JettyHTTPDestination.java:348)
>>>> at
>>>> 
>>> org.apache.cxf.transport.http_jetty.JettyHTTPDestination.doService(JettyHTTPDestination.java:312)
>>>> at
>>>> 
>>> org.apache.cxf.transport.http_jetty.JettyHTTPHandler.handle(JettyHTTPHandler.java:72)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ContextHandler.doHandle(ContextHandler.java:943)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ContextHandler.doScope(ContextHandler.java:879)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ScopedHandler.handle(ScopedHandler.java:117)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.ContextHandlerCollection.handle(ContextHandlerCollection.java:250)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.handler.HandlerWrapper.handle(HandlerWrapper.java:110)
>>>> at org.eclipse.jetty.server.Server.handle(Server.java:349)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.HttpConnection.handleRequest(HttpConnection.java:441)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.HttpConnection$RequestHandler.content(HttpConnection.java:936)
>>>> at org.eclipse.jetty.http.HttpParser.parseNext(HttpParser.java:801)
>>>> at org.eclipse.jetty.http.HttpParser.parseAvailable(HttpParser.java:224)
>>>> at
>>>> 
>>> org.eclipse.jetty.server.AsyncHttpConnection.handle(AsyncHttpConnection.java:51)
>>>> at
>>>> 
>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint.handle(SelectChannelEndPoint.java:586)
>>>> at
>>>> 
>>> org.eclipse.jetty.io.nio.SelectChannelEndPoint$1.run(SelectChannelEndPoint.java:44)
>>>> at
>>>> 
>>> org.eclipse.jetty.util.thread.QueuedThreadPool.runJob(QueuedThreadPool.java:598)
>>>> at
>>>> 
>>> org.eclipse.jetty.util.thread.QueuedThreadPool$3.run(QueuedThreadPool.java:533)
>>>> at java.lang.Thread.run(Thread.java:722)
>>>> Caused by: org.apache.ws.security.WSSecurityException: An error was
>>>> discovered processing the <wsse:Security> header
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.checkActions(WSS4JInInterceptor.java:383)
>>>> at
>>>> 
>>> org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.handleMessage(WSS4JInInterceptor.java:333)
>>>> ... 22 more
>>>> 
>>>> even if SOAPEnvelopper message received by CXF contains SOAP Security
>>> Header
>>>> 
>>>> ID: 1
>>>> Address: http://127.0.0.1:9090/training/WebService
>>>> Encoding: UTF-8
>>>> Http-Method: POST
>>>> Content-Type: text/xml;charset=UTF-8
>>>> Headers: {accept-encoding=[gzip,deflate], connection=[keep-alive],
>>>> Content-Length=[1590], content-type=[text/xml;charset=UTF-8], Host=[
>>>> 127.0.0.1:9090], SOAPAction=["
>>> http://training.fusesource.com/saveCustomer";],
>>>> User-Agent=[Apache-HttpClient/4.1.1 (java 1.5)]}
>>>> Payload: <soapenv:Envelope xmlns:soapenv="
>>>> http://schemas.xmlsoap.org/soap/envelope/"; xmlns:tra="
>>>> http://training.fusesource.com/";>
>>>>  <soapenv:Header>
>>>>          <wsse:Security xmlns:wsse="
>>>> 
>>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
>>>> "
>>>>               soap:mustUnderstand="1">
>>>> <wsse:UsernameToken xmlns:wsse="
>>>> 
>>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd
>>> "
>>>> xmlns:wsu="
>>>> 
>>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd
>>> "
>>>> wsu:Id="UsernameToken-1">
>>>> <wsse:Username>charles</wsse:Username>
>>>> <wsse:Password Type="
>>>> 
>>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest
>>>> ">TVzWGxNvhlixNVWol8poD9DHxl8=</wsse:Password>
>>>> <wsse:Nonce EncodingType="
>>>> 
>>> http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary
>>>> ">WsMNSm/C4dzdPS3OhUi94Q==</wsse:Nonce>
>>>> <wsu:Created>2013-01-09T15:46:14.908Z</wsu:Created>
>>>> </wsse:UsernameToken>
>>>> </wsse:Security>
>>>>  </soapenv:Header>
>>>>  <soapenv:Body>
>>>>     <tra:saveCustomer>
>>>>        <customer>
>>>>           <!--Optional:-->
>>>>           <name>?</name>
>>>>           <!--Zero or more repetitions:-->
>>>>           <address>?</address>
>>>>           <numOrders>?</numOrders>
>>>>           <revenue>?</revenue>
>>>>           <!--Optional:-->
>>>>           <test>?</test>
>>>>           <!--Optional:-->
>>>>           <birthDate>?</birthDate>
>>>>           <!--Optional:-->
>>>>           <type>?</type>
>>>>        </customer>
>>>>     </tra:saveCustomer>
>>>>  </soapenv:Body>
>>>> </soapenv:Envelope>
>>>> --------------------------------------
>>>> 
>>>> CXF & Camel config
>>>> 
>>>>   <cxf:cxfEndpoint id="WS"
>>>>                    address="http://localhost:9090/training/WebService";
>>>> 
>>> serviceClass="com.fusesource.training.CustomerService">
>>>>       <cxf:outInterceptors>
>>>>           <ref bean="loggingOutInterceptor"/>
>>>>        </cxf:outInterceptors>
>>>>       <cxf:inInterceptors>
>>>>           <ref bean="loggingInInterceptor"/>
>>>>           <ref bean="wss4jInInterceptor"/>
>>>>       </cxf:inInterceptors>
>>>>   </cxf:cxfEndpoint>
>>>> 
>>>>   <bean id="loggingOutInterceptor"
>>>> class="org.apache.cxf.interceptor.LoggingOutInterceptor"/>
>>>>   <bean id="loggingInInterceptor"
>>>> class="org.apache.cxf.interceptor.LoggingInInterceptor"/>
>>>> 
>>>>   <bean id="wss4jInInterceptor"
>>>> class="org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor">
>>>>       <constructor-arg>
>>>>           <map>
>>>>               <entry key="action" value="UsernameToken"/>
>>>>               <entry key="passwordType" value="PasswordDigest"/>
>>>>               <entry key="passwordCallbackClass"
>>>> value="com.fusesource.training.camel.UTPasswordCallback"/>
>>>>           </map>
>>>>       </constructor-arg>
>>>>   </bean>
>>>> 
>>>> Version of CXF used : 2.7.1
>>>> WSS4J : 1.6.8
>>>> 
>>>> In debug mode, I can see that in the class WSS4JInInterceptor when we
>>>> handle the message (handleMessage(SoapMessage msg) throws Fault), the
>>>> element is null ( Element elem =
>>>> WSSecurityUtil.getSecurityHeader(doc.getSOAPPart(),
>>>> actor); ) like also wsResult.
>>>> 
>>>> Does anybody knows how to solve this issue and why SoapHeaders have been
>>>> removed ?
>>>> 
>>>> Regards,
>>>> 
>>>> Charles Moulliard
>>>> Apache Committer / Sr. Enterprise Architect (RedHat)
>>>> Twitter : @cmoulliard | Blog : http://cmoulliard.blogspot.com
>>> 
>>> 
> 

Reply via email to