In testing Metro interop I noticed that if I only specified:

<sp:SignedParts xmlns:sp="http://docs.oasis-open.org/ws-sx/ws-securitypolicy/200702";>
          <sp:Body/>
        </sp:SignedParts>

CXF happily generated messages signing only the Body, but Metro apparently requires the WS-A headers (at least MessageID) to be signed anyway:

Feb 13, 2014 3:51:55 PM com.sun.xml.ws.security.opt.impl.incoming.TargetResolverImpl resolveAndVerifyTargets SEVERE: WSS0206: Security in the incoming message does not conform to the SecurityPolicy configured at the Recipient. Feb 13, 2014 3:51:55 PM com.sun.xml.ws.security.opt.impl.incoming.TargetResolverImpl resolveAndVerifyTargets SEVERE: WSS0814: policy verification error, missing target MessageID for Signature Feb 13, 2014 3:51:55 PM com.sun.xml.wss.jaxws.impl.SecurityServerTube processRequest
SEVERE: WSSTUBE0025: Error in Verifying Security in the Inbound Message.
com.sun.xml.wss.impl.PolicyViolationException: com.sun.xml.wss.XWSSecurityException: Policy verification error:Missing target MessageID for Signature at com.sun.xml.wss.impl.policy.verifier.MessagePolicyVerifier.verifyPolicy(MessagePolicyVerifier.java:151) at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.createMessage(SecurityRecipient.java:1016) at com.sun.xml.ws.security.opt.impl.incoming.SecurityRecipient.validateMessage(SecurityRecipient.java:252) at com.sun.xml.wss.jaxws.impl.SecurityTubeBase.verifyInboundMessage(SecurityTubeBase.java:455) at com.sun.xml.wss.jaxws.impl.SecurityServerTube.processRequest(SecurityServerTube.java:295)

It's certainly best practice to sign the WS-A headers, but AFAIK it isn't required. Is this an error on Metro's part, or should we be requiring signing of the WS-A headers too?

Thanks,

  - Dennis

Reply via email to