In CXF 2.7.12, I'm having a weird problem when signing a SAML 1.1 assertion, 
when the assertion contains another assertion in the Advice element. All SAML 
assertions are required to be signed by the issuer, including assertions 
embedded in the Advice element. But what is happening is that when I sign the 
"outer" assertion, the AssertionWrapper.signAssertion() method is stripping the 
digest and signature values  from the "inner" assertion in the Advice element.

The signature line looks like this:
            sa.signAssertion(issuerAlias, issuerPassword, issuerCrypto, false,
                "http://www.w3.org/2001/10/xml-exc-c14n#";, signatureAlgorithm, 
digestAlgorithm);

Here is what the assertion looks like immediately before and after this call, 
stripped down a bit for brevity. You can see in the second assertion that the 
signature on the inner Advice/Assertion has been changed - the digest method is 
changed, and the digest and signature values have been removed. What is causing 
this, and how can I prevent it? Any and all help would be appreciated, thanx!

BEFORE:

<saml1:Assertion AssertionID="_99B35E24E753D60162141216853759332" 
IssueInstant="2014-10-01T13:02:17.592Z" Issuer="SWIM-STS" MajorVersion="1" 
MinorVersion="1" xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion">
                <saml1:Conditions NotBefore="2014-10-01T13:02:17.585Z" 
NotOnOrAfter="2014-10-01T13:03:16.748Z">
                    ...
                </saml1:Conditions>
                <saml1:Advice>
                                <saml1:Assertion 
AssertionID="_99B35E24E753D60162141216853713111" 
IssueInstant="2014-10-01T13:02:17.130Z" Issuer="SWIM-STS" MajorVersion="1" 
MinorVersion="1" xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion">
                                                <saml1:Conditions 
NotBefore="2014-10-01T13:02:16.748Z" NotOnOrAfter="2014-10-01T13:03:16.748Z">
                ...
                                                </saml1:Conditions>
                                                <saml1:AuthenticationStatement 
AuthenticationInstant="2014-10-01T13:02:16.748Z" 
AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:X509-PKI">
                                                                <saml1:Subject>
                                                                    ...
                                                                </saml1:Subject>
                                                </saml1:AuthenticationStatement>
                                                <ds:Signature 
xmlns:ds="http://www.w3.org/2000/09/xmldsig#";>
                                                                <ds:SignedInfo>
                                                                                
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                                                                
<ds:SignatureMethod 
Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
                                                                                
<ds:Reference URI="#_99B35E24E753D60162141216853713111">
                                                                                
                <ds:Transforms>
                                                                                
                                <ds:Transform 
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                                                                                
                                <ds:Transform 
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                                                                
                </ds:Transforms>
                                                                                
                <ds:DigestMethod 
Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                                                                                
                
<ds:DigestValue>1EEQlsuneSKs81Hq+3lcqiKjOXMMNmbgVnZ0pFuIQOs=</ds:DigestValue>
                                                                                
</ds:Reference>
                                                                </ds:SignedInfo>
                                                                
<ds:SignatureValue>...</ds:SignatureValue>
                                                                <ds:KeyInfo>
                                                                                
<ds:X509Data>
                                                                                
                <ds:X509Certificate>...</ds:X509Certificate>
                                                                                
</ds:X509Data>
                                                                </ds:KeyInfo>
                                                </ds:Signature>
                                </saml1:Assertion>
                </saml1:Advice>
                <saml1:AuthenticationStatement 
AuthenticationInstant="2014-10-01T13:02:17.585Z" 
AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:X509-PKI">
                                <saml1:Subject>
                                    ...
                                </saml1:Subject>
                </saml1:AuthenticationStatement>
</saml1:Assertion>

AFTER:

<saml1:Assertion AssertionID="_99B35E24E753D60162141216853759332" 
IssueInstant="2014-10-01T13:02:17.592Z" Issuer="SWIM-STS" MajorVersion="1" 
MinorVersion="1" xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion">
                <saml1:Conditions NotBefore="2014-10-01T13:02:17.585Z" 
NotOnOrAfter="2014-10-01T13:03:16.748Z">
        ...
                </saml1:Conditions>
                <saml1:Advice>
                                <saml1:Assertion 
AssertionID="_99B35E24E753D60162141216853713111" 
IssueInstant="2014-10-01T13:02:17.130Z" Issuer="SWIM-STS" MajorVersion="1" 
MinorVersion="1" xmlns:saml1="urn:oasis:names:tc:SAML:1.0:assertion">
                                                <saml1:Conditions 
NotBefore="2014-10-01T13:02:16.748Z" NotOnOrAfter="2014-10-01T13:03:16.748Z">
                ...
                                                </saml1:Conditions>
                                                <saml1:AuthenticationStatement 
AuthenticationInstant="2014-10-01T13:02:16.748Z" 
AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:X509-PKI">
                                                                <saml1:Subject>
                    ...
                                                                </saml1:Subject>
                                                </saml1:AuthenticationStatement>
                                                <ds:Signature 
xmlns:ds="http://www.w3.org/2000/09/xmldsig#";>
                                                                <ds:SignedInfo>
                                                                                
<ds:CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                                                                
<ds:SignatureMethod 
Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
                                                                                
<ds:Reference URI="#_99B35E24E753D60162141216853713111">
                                                                                
                <ds:Transforms>
                                                                                
                                <ds:Transform 
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                                                                                
                                <ds:Transform 
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                                                                
                </ds:Transforms>
                                                                                
                <ds:DigestMethod 
Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
                                                                                
                <ds:DigestValue/>
                                                                                
</ds:Reference>
                                                                </ds:SignedInfo>
                                                                
<ds:SignatureValue/>
                                                                <ds:KeyInfo>
                                                                                
<ds:X509Data>
                                                                                
                <ds:X509Certificate>...</ds:X509Certificate>
                                                                                
</ds:X509Data>
                                                                </ds:KeyInfo>
                                                </ds:Signature>
                                </saml1:Assertion>
                </saml1:Advice>
                <saml1:AuthenticationStatement 
AuthenticationInstant="2014-10-01T13:02:17.585Z" 
AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:X509-PKI">
                                <saml1:Subject>
                                   ...
                                </saml1:Subject>
                </saml1:AuthenticationStatement>
                <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#";>
                                <ds:SignedInfo>
                                                <ds:CanonicalizationMethod 
Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                                <ds:SignatureMethod 
Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
                                                <ds:Reference 
URI="#_99B35E24E753D60162141216853759332">
                                                                <ds:Transforms>
                                                                                
<ds:Transform 
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                                                                                
<ds:Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
                                                                </ds:Transforms>
                                                                
<ds:DigestMethod Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                                                                
<ds:DigestValue>OnmMYA4JG7RZRa1+NdrGAcHt5K03l1ZLCufXdF+qXmI=</ds:DigestValue>
                                                </ds:Reference>
                                </ds:SignedInfo>
                                <ds:SignatureValue>...</ds:SignatureValue>
                                <ds:KeyInfo>
                                                <ds:X509Data>
                                                                
<ds:X509Certificate>...</ds:X509Certificate>
                                                </ds:X509Data>
                                </ds:KeyInfo>
                </ds:Signature>
</saml1:Assertion>


Stephen W. Chappell

Reply via email to