On 01/16/2017 03:32 PM, Colm O hEigeartaigh wrote:
> It's a bug...either in CXF or WSS4J. It manifests when there is whitespace
> between the SOAP Body tag and the first Element in the Body itself. 

Is this reported somewhere?


> For a workaround, you can just use the DOM WSS4JInInterceptor instead.

Changing it to org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor did
not solve the issue. I get the same error.

Kind regards,

Martijn Brinkers


> On Sat, Jan 14, 2017 at 9:20 AM, martijn.list <[email protected]>
> wrote:
> 
>> Hi,
>>
>> I have CXF configured server side with spring and enabled UsernameToken
>> authentication:
>>
>> <bean id="publicWebServicePasswordInterceptor"
>>   class="org.apache.cxf.ws.security.wss4j.WSS4JStaxInInterceptor">
>>   <constructor-arg>
>>     <map>
>>      <entry key="action" value="UsernameToken" />
>>      <entry key="passwordType" value="PasswordText" />
>>      <entry key="passwordCallbackRef">
>>        <ref bean="publicWebServicePasswordHandler"/>
>>      </entry>
>>    </map>
>>  </constructor-arg>
>> </bean>
>>
>> <jaxws:inInterceptors>
>>    <ref bean="publicWebServicePasswordInterceptor"/>
>> </jaxws:inInterceptors>
>>
>> This works when the SOAP client is created with CXF. However when I use
>> SoapUI to test the web service I always get the following error in the
>> SOAP server:
>>
>> "Security processing failed (actions mismatch)"
>>
>> With some debugging I noticed that the "incomingSecurityEventList" is
>> empty when
>>
>> From StaxActionInInterceptor:
>>
>> public void handleMessage(SoapMessage soapMessage)
>> {
>> [SNIP]
>> ...
>> List<SecurityEvent> incomingSecurityEventList =
>> (List)soapMessage.get(SecurityEvent.class.getName() + ".in");
>> ...
>>
>> This is why a few lines later a SoapFault exception is thrown because
>> the incomingSecurityEventList should not be empty.
>>
>> If I use the CXF SOAP client (which works), the
>> incomingSecurityEventList contains the following object:
>>
>> org.apache.wss4j.stax.securityEvent.UsernameTokenSecurityEvent
>>
>> It might be that the SOAP call from SoapUI is incorrect or that
>> something is missing but I have not figured out why this is not working.
>>
>> I hope someone can tell me what's not correct with the SOAP call from
>> SoapUI:
>>
>> SOAP call from SoapUI (from tcpdump):
>>
>> POST /usersws HTTP/1.1
>>
>> Content-Type: text/xml;charset=UTF-8
>>
>> SOAPAction: ""
>>
>> Content-Length: 829
>>
>> Host: 127.0.0.1:9009
>>
>> Connection: Keep-Alive
>>
>> User-Agent: Apache-HttpClient/4.1.1 (java 1.5)
>>
>>
>>
>> <soapenv:Envelope
>> xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/";
>> xmlns:ws="http://ws.djigzo.application.mitm/";>
>>    <soapenv:Header><wsse:Security soapenv:mustUnderstand="1"
>> 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"><wsse:UsernameToken
>> wsu:Id="UsernameToken-A74ECD7A71C7695F3D148438453965
>> 395"><wsse:Username>admin</wsse:Username><wsse:Password
>> Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-
>> wss-username-token-profile-1.0#PasswordText">password</
>> wsse:Password></wsse:UsernameToken></wsse:Security></soapenv:Header>
>>    <soapenv:Body>
>>       <ws:isUser>
>>          <!--Optional:-->
>>          <email>?</email>
>>       </ws:isUser>
>>    </soapenv:Body>
>> </soapenv:Envelope>
>>
>> I have tested it with CXF 3.0.9 and with 3.0.12
>>
>> Any idea why this is not working?
>>
>> Kind regards,
>>
>> Martijn Brinkers
>>
> 
> 
> 


-- 
CipherMail email encryption

Email encryption with support for S/MIME, OpenPGP, PDF encryption and
secure webmail pull.

https://www.ciphermail.com

Twitter: http://twitter.com/CipherMail

Reply via email to