I've been trying to get a web-service and client set up using CXF, JAX-WS, and the CXF extensions for WS-Security and WS-SecurityPolicy. I've got it mostly working, but my WSDL has two required SOAP headers that are intended to be passed to the endpoint, and that I want to be able to encrypt and sign. When I do so, though, the headers are correctly decrypted but are not passed to the endpoint after decryption.

This happens because, as far as I can tell, org.apache.cxf.binding.soap.interceptor.SoapHeaderInterceptor correctly searches for headers in the headers list of the Message parameter to handleMessage, but doesn't find it because the encrypted headers didn't really exist in their final form in the actual message.

I've been able to "work around" this by sticking a custom interceptor in between DocLiteralInInterceptor and SoapHeaderInterceptor that reads the wss4j signature verification result out of the message, interprets the appropriate decrypted elements as headers, and sticks them into the headers list, but this solution feels fragile to me.

Any help or suggestions would be appreciated. I'm using CXF 2.3.1 on Java 6.

Ross M. Lodge


Reply via email to