[ https://issues.apache.org/jira/browse/CXF-6409?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14550645#comment-14550645 ]
Dallas Vaughan commented on CXF-6409: ------------------------------------- Here is the sanitized request (I added formatting to the XML part for readability). There is no stack trace as the original XMLSecurityException gets swallowed and rethrown as a generic WSSecurityException (which then gets sent back as a fault). I found the cause by stepping through Santuario code during the processing of the request. The exception thrown for the DOM-based implementation (which is also swallowed so there's no stack trace) is a {{java.lang.ArrayIndexOutOfBoundsException}} in the {{org.apache.xml.security.encryption.XMLCipher.decryptToByteArray()}} method at a {{System.arraycopy(encryptedBytes, 0, ivBytes, ivLen)}} call where {{encryptedBytes.length == 0}}, {{ivBytes.length == 16}}, and {{ivLen == 16}}. When I stepped through this I found that it happens during processing of an EncryptedData/CipherData/CipherValue element that contains an {{xop:Include}} element. Since it probably expects base64 here, it failed to initialize {{encryptedBytes}} and {{System.arraycopy}} expects a byte array of length 16. {code:|title=Metro Request|borderStyle=solid} POST /test/services/myService HTTP/1.1 Accept: text/xml, multipart/related Content-Type: multipart/related;start="<rootpart*950412d0-d43b-4058-bff6-0a3d54c79...@example.jaxws.sun.com>";type="application/xop+xml";boundary="uuid:950412d0-d43b-4058-bff6-0a3d54c79563";start-info="text/xml" SOAPAction: "http://example.com/webservice/myService/myOperation" User-Agent: JAX-WS RI 2.2.10 svn-revision#919b322c92f13ad085a933e8dd6dd35d4947364b Host: example.com:3333 Connection: keep-alive Content-Length: 11154 --uuid:950412d0-d43b-4058-bff6-0a3d54c79563 Content-Id: <rootpart*950412d0-d43b-4058-bff6-0a3d54c79...@example.jaxws.sun.com> Content-Type: application/xop+xml;charset=utf-8;type="text/xml" Content-Transfer-Encoding: binary <?xml version='1.0' encoding='UTF-8'?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:exc14n="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsse11="http://docs.oasis-open.org/wss/oasis-wss-wssecurity-secext-1.1.xsd" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xenc="http://www.w3.org/2001/04/xmlenc#" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <S:Header> <To xmlns="http://www.w3.org/2005/08/addressing">http://localhost:3333/test/services/myService</To> <Action S:mustUnderstand="1" xmlns="http://www.w3.org/2005/08/addressing" xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">http://example.com/webservice/myService/myOperation</Action> <ReplyTo xmlns="http://www.w3.org/2005/08/addressing"> <Address>http://www.w3.org/2005/08/addressing/anonymous</Address> </ReplyTo> <FaultTo xmlns="http://www.w3.org/2005/08/addressing"> <Address>http://www.w3.org/2005/08/addressing/anonymous</Address> </FaultTo> <MessageID xmlns="http://www.w3.org/2005/08/addressing">uuid:52fd687a-8d92-44cb-ac24-0be1e1f4b25f</MessageID> <wsse:Security S:mustUnderstand="1"> <wsu:Timestamp wsu:Id="_3" xmlns:ns17="http://www.w3.org/2003/05/soap-envelope" xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"> <wsu:Created>2015-05-11T03:04:16Z</wsu:Created> <wsu:Expires>2015-05-11T03:09:16Z</wsu:Expires> </wsu:Timestamp> <xenc:EncryptedKey Id="_5003" xmlns:ns17="http://www.w3.org/2003/05/soap-envelope" xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#rsa-1_5"/> <ds:KeyInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="KeyInfoType"> <wsse:SecurityTokenReference> <ds:X509Data> <ds:X509IssuerSerial> <ds:X509IssuerName>CN=example.com, OU=ABC Group, O=Example, L=Washington, ST=DC, C=US</ds:X509IssuerName> <ds:X509SerialNumber>1234567890</ds:X509SerialNumber> </ds:X509IssuerSerial> </ds:X509Data> </wsse:SecurityTokenReference> </ds:KeyInfo> <xenc:CipherData> <xenc:CipherValue xmlns:xop="http://www.w3.org/2004/08/xop/include"> <xop:Include href="cid:7a19bfbe-029c-49f3-ae8d-7b1a358d5a52@example.jaxws.sun.com"/> </xenc:CipherValue> </xenc:CipherData> <xenc:ReferenceList> <xenc:DataReference URI="#_5004"/> <xenc:DataReference URI="#_5005"/> <xenc:DataReference URI="#_5006"/> </xenc:ReferenceList> </xenc:EncryptedKey> <xenc:EncryptedData Id="_5006" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:ns17="http://www.w3.org/2003/05/soap-envelope" xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <xenc:CipherData> <xenc:CipherValue xmlns:xop="http://www.w3.org/2004/08/xop/include"> <xop:Include href="cid:934d35f9-01e8-468e-9e1e-c50b387a95c2@example.jaxws.sun.com"/> </xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> <wsse:BinarySecurityToken EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary" ValueType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-x509-token-profile-1.0#X509v3" wsu:Id="uuid_8e5eec8c-bbf4-40b4-9eea-12beecbdd981" xmlns:ns17="http://www.w3.org/2003/05/soap-envelope" xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512" xmlns:xop="http://www.w3.org/2004/08/xop/include"> <xop:Include href="cid:d921b6b7-a534-4d85-83d3-e03f0bbdf1a4@example.jaxws.sun.com"/> </wsse:BinarySecurityToken> <xenc:EncryptedData Id="_5005" Type="http://www.w3.org/2001/04/xmlenc#Element" xmlns:ns17="http://www.w3.org/2003/05/soap-envelope" xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <xenc:CipherData> <xenc:CipherValue xmlns:xop="http://www.w3.org/2004/08/xop/include"> <xop:Include href="cid:2c0a72f7-794f-4637-8d07-8ee0e8433145@example.jaxws.sun.com"/> </xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </wsse:Security> </S:Header> <S:Body wsu:Id="_5002"> <xenc:EncryptedData Id="_5004" Type="http://www.w3.org/2001/04/xmlenc#Content" xmlns:ns17="http://www.w3.org/2003/05/soap-envelope" xmlns:ns18="http://docs.oasis-open.org/ws-sx/ws-secureconversation/200512"> <xenc:EncryptionMethod Algorithm="http://www.w3.org/2001/04/xmlenc#aes128-cbc"/> <xenc:CipherData> <xenc:CipherValue xmlns:xop="http://www.w3.org/2004/08/xop/include"> <xop:Include href="cid:81d3295e-2b64-4254-b697-67bcdb1d522e@example.jaxws.sun.com"/> </xenc:CipherValue> </xenc:CipherData> </xenc:EncryptedData> </S:Body> </S:Envelope> --uuid:950412d0-d43b-4058-bff6-0a3d54c79563 Content-Id: <7a19bfbe-029c-49f3-ae8d-7b1a358d5...@example.jaxws.sun.com> Content-Type: application/ciphervalue Content-Transfer-Encoding: binary H���k-�q��2s1 ߲r���ЭGMp~���Sc(�M]�*���"�v�y��v� v��w(�C�d�?�N�������^_��<�'ƿ o��\�D�{�"(�J7�{�Txv�kЁ�T�U�A岏3��a\���`��Wh���q �?��WRr�8t����D��[匁�S�6���'��|'����I����4JDyy��J�������{��'he��۟��F�w�Ch����t6⢾V�D:+��g�\�̜ --uuid:950412d0-d43b-4058-bff6-0a3d54c79563 Content-Id: <934d35f9-01e8-468e-9e1e-c50b387a9...@example.jaxws.sun.com> Content-Type: application/ciphervalue Content-Transfer-Encoding: binary ��������W4�ĐJǀyp��?�xʰ��g�@Cr��!���@�2�$3���� �\���VK��}r�¿�`I ���[Gb�R������ �=��C��Y�!h���j���ܣ�����1Xy���� 2|Ճn" 6LӖ�yy�w%��B�GqHZ� ����P��Jr��`E' {code} > CXF web service cannot process MTOM/XOP-optimized content within a > CipherValue element > -------------------------------------------------------------------------------------- > > Key: CXF-6409 > URL: https://issues.apache.org/jira/browse/CXF-6409 > Project: CXF > Issue Type: Bug > Components: WS-* Components > Affects Versions: 3.0.4 > Reporter: Dallas Vaughan > Assignee: Colm O hEigeartaigh > > When a CXF (WS-Security streaming-enabled) web service endpoint is configured > to use WS-Security and MTOM, CXF cannot handle requests from .NET and Metro > clients because it cannot process {{xop:Include}} elements that are children > of {{enc:CipherValue}} elements, as both of these clients will optimize any > large encrypted (base64-encoded binary) content by serializing it as a MIME > part. > For example, when a Metro MTOM-optimized WS-Security-based request is sent to > a CXF endpoint, the following exception is thrown within > {{org.apache.xml.security.stax.impl.processor.input.AbstractDecryptInputProcessor$DecryptionThread.run()}}: > {code}org.apache.xml.security.exceptions.XMLSecurityException: Unexpected > StAX-Event: START_ELEMENT{code} > This makes it impossible for .NET and Metro clients to communicate with CXF > endpoints which have the MTOM and encryption policies specified. -- This message was sent by Atlassian JIRA (v6.3.4#6332)