DOM exception while parsing signed SAML request with extensions

kotesh201 koteshwarv at gmail.com
Tue Oct 22 10:54:07 EDT 2013


Hi All,

I am trying to send the xs:anyType element XML in signed SAML request
 extensions.
 In order to bypass the signature verification by the shibboleth, I took out
 all the Secruty policy rules from relying-party.xml file. I am doing
 signature verification and CRL check on my own in external login handler.
 
My understanding is Extensions can accpet any valid XMLs. If the extensions
has XML without signature elements inside, the signed SAML request is
parsing successfully. If I add any XML to extensions which has signature
elements getting below error.
 
ERROR

[edu.internet2.middleware.shibboleth.common.profile.ProfileRequestDispatcherServlet:89]
 - Error occurred while processing request
 org.w3c.dom.DOMException: Cannot find Reference in Manifest
             at org.apache.xml.security.signature.Manifest.<init>(Unknown
 Source) ~[xmlsec.jar:na]
             at org.apache.xml.security.signature.SignedInfo.<init>(Unknown
 Source) ~[xmlsec.jar:na]
             at
org.apache.xml.security.signature.XMLSignature.<init>(Unknown
 Source) ~[xmlsec.jar:na]
             at

org.opensaml.xml.signature.impl.SignatureUnmarshaller.unmarshall(SignatureUnmarshaller.java:64)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.signature.impl.SignatureUnmarshaller.unmarshall(SignatureUnmarshaller.java:41)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshallChildElement(AbstractXMLObjectUnmarshaller.java:335)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:122)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshallChildElement(AbstractXMLObjectUnmarshaller.java:335)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:122)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshallChildElement(AbstractXMLObjectUnmarshaller.java:335)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:122)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshallChildElement(AbstractXMLObjectUnmarshaller.java:335)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:122)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshallChildElement(AbstractXMLObjectUnmarshaller.java:335)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:122)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshallChildElement(AbstractXMLObjectUnmarshaller.java:335)
 ~[xmltooling.jar:na]
             at

org.opensaml.xml.io.AbstractXMLObjectUnmarshaller.unmarshall(AbstractXMLObjectUnmarshaller.java:122)
 ~[xmltooling.jar:na]
             at

org.opensaml.ws.message.decoder.BaseMessageDecoder.unmarshallMessage(BaseMessageDecoder.java:203)
 ~[openws.jar:na]
             at

org.opensaml.saml2.binding.decoding.HTTPPostDecoder.doDecode(HTTPPostDecoder.java:91)
 ~[opensaml.jar:na]
             at

org.opensaml.ws.message.decoder.BaseMessageDecoder.decode(BaseMessageDecoder.java:79)
 ~[openws.jar:na]
             at

org.opensaml.saml2.binding.decoding.BaseSAML2MessageDecoder.decode(BaseSAML2MessageDecoder.java:70)
 ~[opensaml.jar:na]
             at

edu.internet2.middleware.shibboleth.idp.profile.saml2.SSOProfileHandler.decodeRequest(SSOProfileHandler.java:332)
 ~[shibboleth-identityprovider.jar:na]
             at

edu.internet2.middleware.shibboleth.idp.profile.saml2.SSOProfileHandler.performAuthentication(SSOProfileHandler.java:190)
 ~[shibboleth-identityprovider.jar:na]
             at

edu.internet2.middleware.shibboleth.idp.profile.saml2.SSOProfileHandler.processRequest(SSOProfileHandler.java:161)
 ~[shibboleth-identityprovider.jar:na]
             at

edu.internet2.middleware.shibboleth.idp.profile.saml2.SSOProfileHandler.processRequest(SSOProfileHandler.java:88)
 ~[shibboleth-identityprovider.jar:na]
             at

edu.internet2.middleware.shibboleth.common.profile.ProfileRequestDispatcherServlet.service(ProfileRequestDispatcherServlet.java:84)
 ~[shibboleth-common.jar:na]
             at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
 [servlet-api.jar:na]
             at

org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
 [catalina.jar:6.0.32]
             at

org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
 [catalina.jar:6.0.32]
 
The sample that I used for this test

===============

<ns3:AuthnRequest
    xmlns:ns3="urn:oasis:names:tc:SAML:2.0:protocol"
    xmlns="urn:oasis:names:tc:SAML:2.0:assertion"
    xmlns:ns2="http://www.w3.org/2000/09/xmldsig#"
    xmlns:ns4="http://www.w3.org/2001/04/xmlenc#"
   
AssertionConsumerServiceURL="https://sp.browse.test.com/idptester/checkuser.jsp"
    Destination="https://idp.test.com/idp/profile/SAML2/POST/SSO"
    ForceAuthn="true"
    ID="_51445c63ed09b24499ca2c5f895fc23"
    IssueInstant="2013-10-21T14:40:28.796Z"
    ProtocolBinding="urn:oasis:names:tc:SAML:2.0:bindings:HTTP-POST"
    Version="2.0">
    <Issuer>
        https://sp.browse.test.com/
    </Issuer>
    <ns3:Extensions>
        <Sc:CustomTag ID="ID_111111111" xmlns:Sc="urn:test:saml:Sc.01" 
					xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
					xsi:schemaLocation="urn:test:saml:Sc.01 Sc.01.xsd">
					<saml2p:Response
						    xmlns:saml2p="urn:oasis:names:tc:SAML:2.0:protocol"
						    Destination="http://spweb.test.com/cgi-bin/samldecoder.pl"
						    ID="_3a79f88b138bacaf21763fb70c871144"
						    InResponseTo="_l0k8-tpzk-ann5-9rkl-fw28-k1mi-e7un-kxsq"
						    IssueInstant="2013-10-21T14:57:22.576Z"
						    Version="2.0">
						    <saml2:Issuer
						        xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
						        Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
						        https://idp.testnet.test.com/idp
						    </saml2:Issuer>
						    <saml2p:Status>
						        <saml2p:StatusCode
						            Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
						    </saml2p:Status>
						    <saml2:Assertion
						        xmlns:saml2="urn:oasis:names:tc:SAML:2.0:assertion"
						        ID="_e0bb8d3984ab795acb213754ec23be97"
						        IssueInstant="2013-10-21T14:57:22.576Z"
						        Version="2.0"
						        xmlns:xs="http://www.w3.org/2001/XMLSchema">
						        <saml2:Issuer
						            Format="urn:oasis:names:tc:SAML:2.0:nameid-format:entity">
						            https://idp.testnet.test.com/idp
						        </saml2:Issuer>
						        <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="#_e0bb8d3984ab795acb213754ec23be97">
						                    <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#">
						                            <ec:InclusiveNamespaces
						                               
xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"
						                                PrefixList="xs"/>
						                        </ds:Transform>
						                    </ds:Transforms>
						                    <ds:DigestMethod
						                       
Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
						                    <ds:DigestValue>
						                        MXz9pSaYBsOhxrKVxK26ypDHlxfzWrpF214RdXS6o2Y=
						                    </ds:DigestValue>
						                </ds:Reference>
						            </ds:SignedInfo>
						            <ds:SignatureValue>
						               
JUcc3iVr/tuY4x1xP+zw1WC+LubNSVWIMd3v6Q0P1R7qgVbKF8kLfoAnYEGp5Yqqo2qXMUip7F9pA9Gj8fCbQ0+VJnGsXFepCA63NPcUnnkY/h08fU+yteS/h5ZWnBjjj+KXN+bnwGyf612SNL9o8jR80oaEhE44KNqflTdzYd0HbInqjjvAVuuOBbb9Ifqsy6TsEHQ9Pl8Lu4EmmqTJ0/yrZoYPh6WVFcjZMGqgd/DHLokNEBRI5Z6PGsvL5Y1sG9MhJSQBysv6WUq4SO2rI9LRGERr2CwxmxwlFt1BlRG1Z4NOvcxdLScBZ9MpvVhPS4fACYX//Ey+5fFddB37zQ==
						            </ds:SignatureValue>
						            <ds:KeyInfo>
						                <ds:X509Data>
						                    <ds:X509Certificate>
						                       
MIIDvDCCAqSgAwIBAgIETMxEnTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQKEwVTV0lGVDAeFw0x
						                       
MTEyMjkyMTQ0MjFaFw0xMzEyMjkyMjE0MjFaMEExDjAMBgNVBAoTBXN3aWZ0MQ4wDAYDVQQKEwVz
						                       
d2lmdDERMA8GA1UEAxMIc3dpZnRpZHAxDDAKBgNVBAMUAyUxMTCCASIwDQYJKoZIhvcNAQEBBQAD
						                       
ggEPADCCAQoCggEBAIiEnhUL51QksCkzoRYO22RzmMBXw9DKMOBrcTziqelnm6Lg06VYys6JfF0/
						                       
8J1DCU8lIDSTSDAsaSXsimEi219AvVoICtx+8DLULq1JgaXF/3qv2ffRAQoMhZ4h5pKmYHcZme5T
						                       
1FkgxGWL7KDwSMH0KoZ/BM4nP2stBZnqZhRJ4bFV4HcMjrzYAi9NYEHxsNkOKmc0y3bfPltV16tG
						                       
LQYHqwfJo1lhgkZiZpMp4qSN2DGISuxuW//+oGh5SOj8/DC90daiSqfrQoiveGNjcfXYlaHB9GqO
						                       
ZNGVRPJGUk7pN3h7EPUXjlRz2adf0uDQ4G+FU2bZclCmyEzXU+x3ZwsCAwEAAaOB7DCB6TALBgNV
						                       
HQ8EBAMCBaAwKwYDVR0QBCQwIoAPMjAxMTEyMjkyMTQ0MjFagQ8yMDEzMDYzMDA0MTQyMVowEQYJ
						                       
YIZIAYb4QgEBBAQDAgZAMDQGA1UdHwQtMCswKaAnoCWkIzAhMQ4wDAYDVQQKEwVTV0lGVDEPMA0G
						                       
A1UEAxMGQ1JMNTMwMB8GA1UdIwQYMBaAFI+vVryAd6P9ntKJg5j+mMcgZSPMMB0GA1UdDgQWBBSa
						                       
VNlZ5nTx4xUcm3ZwCIH90xcmzzAJBgNVHRMEAjAAMBkGCSqGSIb2fQdBAAQMMAobBFY3LjEDAgOo
						                       
MA0GCSqGSIb3DQEBBQUAA4IBAQA340g5S24vqrnM/Y2lq6CLrZncSeO47WELNKJF/XWMLqy11BvM
						                       
Hyc0qiMRLgVbjI3NqOAi+5yDXm4p1dSHclO40pJzDAg+sIdFKZXJS2GvqJvZfiejIrX7T/f3Lyb6
						                       
3NWSZw2mIEDVd2dAzR02w23bOmoMdqucggVh7HBZ0driqIKIxBenJd14eWr9V4WxuojgJaWU2DIq
						                       
TiMa18G0bF2yAo6SwNdX2Vk1vZtSijvoDY6XFGz/IbVHE8Gpkctl9JjxNeBlx6egavfi/PAR7DOC
						                       
q0D5lIgMIIOf1XWakOGQPBJelkLZW2FHrG/69tJJ+frk7BE3PqHHv198GpA+LDqQ
						                    </ds:X509Certificate>
						                </ds:X509Data>
						            </ds:KeyInfo>
						        </ds:Signature>
						        <saml2:Subject>
						            <saml2:NameID
						               
Format="urn:oasis:names:tc:SAML:2.0:nameid-format:persistent"
						                NameQualifier="https://idp.testnet.test.com/idp"
						                SPNameQualifier="http://spweb.test.com/">
						                x8+NhaQyC7ASd0B8t0zSd3+XZZk=
						            </saml2:NameID>
						            <saml2:SubjectConfirmation
						                Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
						                <saml2:SubjectConfirmationData
						                    Address="10.8.160.152"
						                   
InResponseTo="_l0k8-tpzk-ann5-9rkl-fw28-k1mi-e7un-kxsq"
						                    NotOnOrAfter="2013-10-21T15:02:22.576Z"
						                   
Recipient="http://spweb.test.com/cgi-bin/samldecoder.pl"/>
						            </saml2:SubjectConfirmation>
						        </saml2:Subject>
						        <saml2:Conditions
						            NotBefore="2013-10-21T14:57:22.576Z"
						            NotOnOrAfter="2013-10-21T15:02:22.576Z">
						            <saml2:AudienceRestriction>
						                <saml2:Audience>
						                    http://spweb.test.com/
						                </saml2:Audience>
						            </saml2:AudienceRestriction>
						        </saml2:Conditions>
						        <saml2:AuthnStatement
						            AuthnInstant="2013-10-21T14:57:22.465Z"
						           
SessionIndex="0116595cfe1789c9c067b4e4c7e422e6a9aaa9874a6401e17ede34e7dc82128a">
						            <saml2:SubjectLocality
						                Address="10.8.160.152"/>
						            <saml2:AuthnContext>
						                <saml2:AuthnContextClassRef>
						                    urn:oasis:names:tc:SAML:2.0:ac:classes:X509
						                </saml2:AuthnContextClassRef>
						            </saml2:AuthnContext>
						        </saml2:AuthnStatement>
						        <saml2:AttributeStatement>
						            <saml2:Attribute
						                Name="SubjectDN"
						               
NameFormat="urn:oasis:names:tc:SAML:2.0:attrname-format:uri">
						                <saml2:AttributeValue
						                   
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
						                    xsi:type="xs:string">
						                    cn=testuser,ou=users,o=sporgdn1,o=test
						                </saml2:AttributeValue>
						            </saml2:Attribute>
						        </saml2:AttributeStatement>
						    </saml2:Assertion>
						</saml2p:Response>
				</Sc:CustomTag>
    </ns3:Extensions>
    <Signature
        xmlns="http://www.w3.org/2000/09/xmldsig#">
        <SignedInfo>
            <CanonicalizationMethod
               
Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315#WithComments"/>
            <SignatureMethod
               
Algorithm="http://www.w3.org/2001/04/xmldsig-more#rsa-sha256"/>
            <Reference
                URI="#_51445c63ed09b24499ca2c5f895fc23">
                <Transforms>
                    <Transform
                       
Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
                </Transforms>
                <DigestMethod
                    Algorithm="http://www.w3.org/2001/04/xmlenc#sha256"/>
                <DigestValue>
                    sWWwWPc5qefACtgIdwxXK9h7DCcv8c3P4coeX19yd5w=
                </DigestValue>
            </Reference>
        </SignedInfo>
        <SignatureValue>
           
JCDwo8gleAiYQo1Enjd3TU7wgg9pIc1W1V94p1dcBSIECDohRg8LBk1v16RVduAFaX2PKLPT5qo3
           
S84lYzrQiyxowNrYW2whQmecDJpJsSMcPw7OE9RQHE+mqxFvoF7CgOylWFLkk8ixfKkBWO8qz77x
           
6SecGuk76vY5Zu8LD7suczvvQthzw7l1ctagU0oNq2m4rERvNaNFB9pTwTd+GBYypjle8Rzp++/Z
           
6pF69i+J96aBzvbRNfDB/qy2k3iTKHC42JHzv5FBkBbQXcImISexjpUBfmhpRzYl+V802UmOJfxO
            esSfVC3Br6dzZ+xjhL+/ylAFICj3ZwG2fAWtEw==
        </SignatureValue>
        <KeyInfo>
            <X509Data>
                <X509SubjectName>
                    CN=sp-dn-test,O=sporgdn1,C=ww
                </X509SubjectName>
                <X509Certificate>
                   
MIIDzDCCArSgAwIBAgIETMxISTANBgkqhkiG9w0BAQUFADAQMQ4wDAYDVQQKEwVTV0lGVDAeFw0x
                   
MjAxMTAyMTE5MjVaFw0xNDAxMTAyMTQ5MjVaMDoxCzAJBgNVBAYTAnd3MREwDwYDVQQKEwhib3Nz
                   
dXMzMzEYMBYGA1UEAxMPc3AtYnJvd3NlLXN3aWZ0MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB
                   
CgKCAQEAixOnS9JqBfVPamfDPFcMinypKr8Fulm/e6N9eSHQBq1Uq2UGbNEJdDf1nV2RBX848PWn
                   
pFtk+NmYaUsv2KvRmIrqrhCDhTBaLt8cj0D/kRfChLvLxG3Xpu/UDcKoXHM9vpFeml8qL/2wILqd
                   
0MsZt16+MxfhxVuL7N3YiVmaPKM+doio9MzlrDMcfuBySGIhMgHrA35q+FYbnXs6E/kxYGMrvoDc
                   
oC9OEoOXuu6Pl6+0K+u/3/fKxRZ6qL+5u/1KbyR1jr4ZHIbq7DA8qKzlNRdP7CtFWVbDjBiPPJu8
                   
NzSHhmi6Ft0IsxzYWhxYYDnF4Sd5rZab6eyLGNFofgIMYQIDAQABo4IBAjCB/zALBgNVHQ8EBAMC
                   
BaAwKwYDVR0QBCQwIoAPMjAxMjAxMTAyMTE5MjVagQ8yMDEzMDcxMjAzNDkyNVowEQYJYIZIAYb4
                   
QgEBBAQDAgWgMBQGA1UdIAQNMAswCQYHKxUGBgpkBDA0BgNVHR8ELTArMCmgJ6AlpCMwITEOMAwG
                   
A1UEChMFU1dJRlQxDzANBgNVBAMTBkNSTDUzMDAfBgNVHSMEGDAWgBSPr1a8gHej/Z7SiYOY/pjH
                   
IGUjzDAdBgNVHQ4EFgQU0ordUl0b/kqPM0eNLlj9wF7bm1EwCQYDVR0TBAIwADAZBgkqhkiG9n0H
                   
QQAEDDAKGwRWNy4xAwIDqDANBgkqhkiG9w0BAQUFAAOCAQEAYgHjVSo2AOkDj0NOj3Ep7Xz1BJHc
                   
6p2v2NQyw3ZoN8J2mF76BtrIaay/vDbD08EAiI85EdfwQnwr3jk5cqz/jtEiBdd+17IExu+pOBHK
                   
oJ7gVh9E7roAJd9RuLSK6uWQ3BVT1KzkWfCqf7xPn3gg5g7no9ki0wV1AX9fT/PhVB1mnEVC4/4d
                   
CsgAtQkcypeS74iPCldSQyQg+yDbx4Xjej+3EcYNS+1KFYh19p0ZGOd9ZCf888irvkZs83bGufPx
                   
nVoUrZmxetFpGnOhe+LIz3IuhS36p+IJs7jE0+Ra9iszZDS7y22WutPZU0XRCALTJHR0QRtL2yhg
                    CO7OZjQIfw==
                </X509Certificate>
            </X509Data>
        </KeyInfo>
    </Signature>
</ns3:AuthnRequest>

===============

Can you please help me to fix this issue. If you need any additional
information, I can provide.

Thanks,
Kotesh



--
View this message in context: http://shibboleth.1660669.n2.nabble.com/DOM-exception-while-parsing-signed-SAML-request-with-extensions-tp7590767.html
Sent from the Shibboleth - Developers mailing list archive at Nabble.com.


More information about the dev mailing list