PayloadRootQNameEndpointMapping with Wss4jSecurityInterceptor causing a SOAPProcessingException

I am using the below configuration for PayloadRootQNameEndpointMapping with Wss4jSecurityInterceptor

<bean id="endpointMapping" class="org.springframework.ws.server.endpoint.mapping.PayloadRootQNameEndpointMapping"> <property name="mappings"> <props> <prop key="{http://com/clickandbuy/mywebservice/}employeeById_Request">serviceEndPoint</prop> <prop key="{http://com/clickandbuy/mywebservice/}employeeByFile_Request">serviceEndPoint</prop> <prop key="{http://com/clickandbuy/mywebservice/}employeeBySecurity_Request">serviceEndPoint</prop> </props> </property> <property name="interceptors"> <list> <bean class="org.springframework.ws.soap.server.endpoint.interceptor.SoapEnvelopeLoggingInterceptor"/> <ref local="wsSecurityInterceptor"/> </list> </property> </bean> <bean id="wsSecurityInterceptor" class="org.springframework.ws.soap.security.wss4j.Wss4jSecurityInterceptor"> <property name="validationActions" value="UsernameToken" /> <property name="validationCallbackHandler" ref="springSecurityHandler" /> </bean> <bean id="springSecurityHandler" class="org.springframework.ws.soap.security.wss4j.callback.SpringPlainTextPasswordValidationCallbackHandler"> <property name="authenticationManager" ref="authenticationManager"/> </bean> 

If an interceptor is not provided,

  <!--<ref local="wsSecurityInterceptor"/> --> 

It works great. But if the above line is active, that is, an interceptor, it gives an error

 .apache.axiom.soap.impl.builder.StAXSOAPModelBuilder:316||||>> Starting to process SOAP 1.1 message <<||2013-07-13 22:36:57,922||http-apr-8080-exec- 35|DEBUG|org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder:273||||>> Build the OMElement Envelope by the StaxSOAPModelBuilder <<||2013-07-13 22:36:57,923||http-apr-8080-exec-35|DEBUG|org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder:273||||>> Build the OMElement Header by the StaxSOAPModelBuilder <<||2013-07-13 22:36:57,923||http-apr-8080-exec-35|DEBUG|org.apache.axiom.soap.impl.builder.StAXSOAPModelBuilder:273||||>> Build the OMElement Security by the StaxSOAPModelBuilder <<||2013-07-13 22:36:57,924||http-apr-8080-exec-35|DEBUG|org.springframework.ws.server.MessageDispatcher:273||||>> Testing endpoint adapter [org.springframework.ws.server.endpoint.adapter.MessageEndpointAdapter@6e369c05] <<||2013-07-13 22:36:57,925||http-apr-8080-exec-35|DEBUG|org.apache.axiom.soap.impl.llom.SOAPHeaderImpl:426||||>> org.apache.axiom.soap.SOAPProcessingException: An attempt was made to add a normal OMEl ement as a child of a SOAPHeader. This is not supported. The child should be a SOAPHeaderBlock. at org.apache.axiom.soap.impl.llom.SOAPHeaderImpl.addChild(SOAPHeaderImpl.java:423) 

Please share if something is wrong or some correct way to configure spring-ws PayloadRootQNameEndpointMapping using Wss4jSecurityInterceptor

thanks

+1
java spring-security spring-ws wss4j
source share
1 answer

I think there was some error with spring-ws version 1.5.6, I switched to version 2.0.0 and it works fine

0
source share

All Articles