Ben Preston created CXF-5983:
--------------------------------

             Summary: Security processing failed (actions mismatch) occurs due 
to ENCR action appearing twice
                 Key: CXF-5983
                 URL: https://issues.apache.org/jira/browse/CXF-5983
             Project: CXF
          Issue Type: Bug
          Components: JAX-WS Runtime
    Affects Versions: 2.7.11
         Environment: Windows 7
Windows Vista
            Reporter: Ben Preston


I am receiving a response from a server which has the following actions: 
Timestamp Encrypt Signature. 
However when the response hits the inbound interceptor (WSS4JInInterceptor) it 
is throwing the following exception:

Sep 01, 2014 2:07:49 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor 
checkActions
WARNING: Security processing failed (actions mismatch)
Sep 01, 2014 2:07:49 PM org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor 
handleMessage
WARNING:
org.apache.ws.security.WSSecurityException: An error was discovered processing 
the <wsse:Security> header
        at 
org.apache.cxf.ws.security.wss4j.WSS4JInInterceptor.checkActions(WSS4JInInterceptor.java:354)

The inbound configuration aspects are as follows:

       //Inbound Policy Rules
        inProps.put("action", "Timestamp Encrypt Signature");
        inProps.put("passwordCallbackClass", 
"reply.solidsoft.emvs.common.EmvsPasswordCallback");
        inProps.put("decryptionPropFile", EmvsProperties.val(propPrefix + 
"resp.propFile"));
        inProps.put("signaturePropFile", EmvsProperties.val(propPrefix + 
"enc.propFile"));
        inProps.put("encryptionKeyIdentifier", "Thumbprint");
        inProps.put("signatureKeyIdentifier", "DirectReference");
        inProps.put("encryptionKeyTransportAlgorithm", 
"http://www.w3.org/2001/04/xmlenc#rsa-1_5";);
        inProps.put("signatureAlgorithm", 
"http://www.w3.org/2001/04/xmldsig-more#rsa-sha256";);
        inProps.put("signatureDigestAlgorithm", 
"http://www.w3.org/2001/04/xmlenc#sha256";);
        inProps.put("encryptionSymAlgorithm", 
"http://www.w3.org/2001/04/xmlenc#aes256-cbc";);

        client.getInInterceptors().add(new WSS4JInInterceptor(inProps));

I have debugged the code in Netbeans and the issue stems from CXF erroneously 
misreading the actions on the incoming message. The WSS4JInInterceptor (or 
rather the classes/methods it calls) determines that the message has the 
following actions (see WSConstants.java):

hex constant/tag value
4/ENCR
2/SIGN
4/ENCR
1000/BST
20/TS

It can be seen that the security engine determines that ENCR occurs twice. This 
causes WSHandler.java - checkReceiverResultsAnyOrder() to throw the mismatch 
error. I have managed a temporary work around by creating my own version of 
this code and ignoring the first/erroneous ENCR action. This lets the code 
execute without error and all parts are decrypted perfectly. As such I don't 
believe that the response message is at fault. 



--
This message was sent by Atlassian JIRA
(v6.3.4#6332)

Reply via email to