En cxf cuando firmamos, encriptamos… los mensajes SOAP, tanto cliente como servidor, deben de comprobar siempre que la cabecera esta firmada, o encriptada o … Pero que pasa cuando los mensajes SOAPFault no estan firmados, o encriptados o …
Pues que hay un error indicando: org.apache.cxf.binding.soap.SoapFault: No SIGNED element found matching XPath /soapenv:Envelope/soapenv:Body
Como indicar a CXF que no intente comprobar la seguridad de los mensajes que son SoapFault:
<cxf:bus> <cxf:features> <cxf:logging /> </cxf:features> <cxf:inInterceptors> <ref bean="checkResponse" /> <bean class="org.apache.cxf.ws.security.wss4j.DefaultCryptoCoverageChecker"> <property name="checkFaults" value="false"/> </bean> </cxf:inInterceptors> <cxf:outInterceptors> <ref bean="SignRequest" /> </cxf:outInterceptors> </cxf:bus>
Jira en CXF informando y solucionando este bug.