<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40"><head><META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii"><meta name=Generator content="Microsoft Word 12 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
        {font-family:\5B8B\4F53;
        panose-1:2 1 6 0 3 1 1 1 1 1;}
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
        {font-family:"\@\5B8B\4F53";
        panose-1:2 1 6 0 3 1 1 1 1 1;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]--></head><body lang=EN-US link=blue vlink=purple><div class=WordSection1><p class=MsoNormal>Hi, all<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>I’m using OpenSAML to test some SAML1.1 sso. When I get a saml response from the server, I try to validate the signature of the saml assertion, but I always get the “Signature verification failed” error.<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>My code is like:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> KeyInfoCredentialResolver keyInfoCrendentialResolver = SecurityHelper.<i>buildBasicInlineKeyInfoResolver</i> ();</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> KeyInfoCriteria criteria = </span><b><span style='font-size:10.0pt;font-family:"Courier New";color:#7F0055'>new</span></b><span style='font-size:10.0pt;font-family:"Courier New";color:black'> KeyInfoCriteria(signature.getKeyInfo());</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> CriteriaSet criteriaSet = </span><b><span style='font-size:10.0pt;font-family:"Courier New";color:#7F0055'>new</span></b><span style='font-size:10.0pt;font-family:"Courier New";color:black'> CriteriaSet(criteria);</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> Credential credential = keyInfoCrendentialResolver.resolveSingle(criteriaSet);</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> SignatureValidator signatureValidator = </span><b><span style='font-size:10.0pt;font-family:"Courier New";color:#7F0055'>new</span></b><span style='font-size:10.0pt;font-family:"Courier New";color:black'> SignatureValidator (credential);</span><span style='font-size:10.0pt;font-family:"Courier New"'> <o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> </span><b><span style='font-size:10.0pt;font-family:"Courier New";color:#7F0055'>try</span></b><span style='font-size:10.0pt;font-family:"Courier New";color:black'> {</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> signatureValidator.validate (signature);</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> } </span><b><span style='font-size:10.0pt;font-family:"Courier New";color:#7F0055'>catch</span></b><span style='font-size:10.0pt;font-family:"Courier New";color:black'> (ValidationException e) {</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> </span><span style='font-size:10.0pt;font-family:"Courier New";color:#3F7F5F'>// </span><b><span style='font-size:10.0pt;font-family:"Courier New";color:#7F9FBF'>TODO</span></b><span style='font-size:10.0pt;font-family:"Courier New";color:#3F7F5F'> Auto-generated catch block</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal style='text-autospace:none'><span style='font-size:10.0pt;font-family:"Courier New";color:black'> e.printStackTrace();</span><span style='font-size:10.0pt;font-family:"Courier New"'><o:p></o:p></span></p><p class=MsoNormal><span style='font-size:10.0pt;font-family:"Courier New";color:black'> }</span><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>And the saml response is like:<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><samlp:Response InResponseTo="TEST0001"<o:p></o:p></p><p class=MsoNormal> IssueInstant="2007-03-14T17:44:00.629Z" MajorVersion="1"<o:p></o:p></p><p class=MsoNormal> MinorVersion="1" ResponseID="_1f32344c6519a4c109fac14b203573d0"<o:p></o:p></p><p class=MsoNormal> xmlns="urn:oasis:names:tc:SAML:1.0:protocol"<o:p></o:p></p><p class=MsoNormal> xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"<o:p></o:p></p><p class=MsoNormal> xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"<o:p></o:p></p><p class=MsoNormal> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><o:p></o:p></p><p class=MsoNormal> <samlp:Status xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"><o:p></o:p></p><p class=MsoNormal> <samlp:StatusCode Value="samlp:Success"/><o:p></o:p></p><p class=MsoNormal> </samlp:Status><o:p></o:p></p><p class=MsoNormal> <saml:Assertion AssertionID="_e63f2121a0086c9b1de84241dac79351"<o:p></o:p></p><p class=MsoNormal> IssueInstant="2007-03-14T17:43:59.085Z"<o:p></o:p></p><p class=MsoNormal> Issuer="CN=txslsaned4.nss.vzwnet.com, L=South Lake, ST=California, C=US, OU=Network Support Systems, O=Verizon Wireless"<o:p></o:p></p><p class=MsoNormal> MajorVersion="1" MinorVersion="1"<o:p></o:p></p><p class=MsoNormal> xmlns="urn:oasis:names:tc:SAML:1.0:assertion"<o:p></o:p></p><p class=MsoNormal> xmlns:saml="urn:oasis:names:tc:SAML:1.0:assertion"<o:p></o:p></p><p class=MsoNormal> xmlns:samlp="urn:oasis:names:tc:SAML:1.0:protocol"<o:p></o:p></p><p class=MsoNormal> xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><o:p></o:p></p><p class=MsoNormal> <saml:Conditions NotBefore="2007-03-14T17:43:58.686Z" NotOnOrAfter="2007-03-15T17:43:58.686Z"/><o:p></o:p></p><p class=MsoNormal> <saml:AuthenticationStatement<o:p></o:p></p><p class=MsoNormal> AuthenticationInstant="2007-03-14T17:43:58.686Z" AuthenticationMethod="urn:oasis:names:tc:SAML:1.0:am:password"><o:p></o:p></p><p class=MsoNormal> <saml:Subject><o:p></o:p></p><p class=MsoNormal> <saml:NameIdentifier NameQualifier="VZW SANE User">testuser</saml:NameIdentifier><o:p></o:p></p><p class=MsoNormal> <saml:SubjectConfirmation><o:p></o:p></p><p class=MsoNormal> <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:artifact</saml:ConfirmationMethod><o:p></o:p></p><p class=MsoNormal> </saml:SubjectConfirmation><o:p></o:p></p><p class=MsoNormal> </saml:Subject><o:p></o:p></p><p class=MsoNormal> </saml:AuthenticationStatement><o:p></o:p></p><p class=MsoNormal> <saml:AttributeStatement><o:p></o:p></p><p class=MsoNormal> <saml:Subject><o:p></o:p></p><p class=MsoNormal> <saml:NameIdentifier NameQualifier="VZW SANE User">testuser</saml:NameIdentifier><o:p></o:p></p><p class=MsoNormal> <saml:SubjectConfirmation><o:p></o:p></p><p class=MsoNormal> <saml:ConfirmationMethod>urn:oasis:names:tc:SAML:1.0:cm:artifact</saml:ConfirmationMethod><o:p></o:p></p><p class=MsoNormal> </saml:SubjectConfirmation><o:p></o:p></p><p class=MsoNormal> </saml:Subject><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="role" AttributeNamespace="urn:oasis:names:tc:xacml:2.0:subject:role"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>noc3grp</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="email" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>Robert.Dickson@Verizonwireless.com</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="firstName" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>Robert</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="lastName" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>Dickson</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="phoneNumber" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>6782773574</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="pagerServiceNumber" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>n/a</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="pagerPin" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>n/a</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="unixUserName" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>testuser</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="unixUID" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>57074</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="unixHomeDir" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>/export/home/57074</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="unixLoginShell" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>/bin/ksh</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> <saml:Attribute AttributeName="role" AttributeNamespace="urn:verizon:sane"><o:p></o:p></p><p class=MsoNormal> <saml:AttributeValue>noc3grp</saml:AttributeValue><o:p></o:p></p><p class=MsoNormal> </saml:Attribute><o:p></o:p></p><p class=MsoNormal> </saml:AttributeStatement><o:p></o:p></p><p class=MsoNormal> <ds:Signature xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><o:p></o:p></p><p class=MsoNormal> <ds:SignedInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><o:p></o:p></p><p class=MsoNormal> <ds:CanonicalizationMethod<o:p></o:p></p><p class=MsoNormal> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/><o:p></o:p></p><p class=MsoNormal> <ds:SignatureMethod<o:p></o:p></p><p class=MsoNormal> Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/><o:p></o:p></p><p class=MsoNormal> <ds:Reference URI="#_e63f2121a0086c9b1de84241dac79351" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><o:p></o:p></p><p class=MsoNormal> <ds:Transforms xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><o:p></o:p></p><p class=MsoNormal> <ds:Transform<o:p></o:p></p><p class=MsoNormal> Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/><o:p></o:p></p><p class=MsoNormal> <ds:Transform<o:p></o:p></p><p class=MsoNormal> Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><o:p></o:p></p><p class=MsoNormal> <ec:InclusiveNamespaces<o:p></o:p></p><p class=MsoNormal> PrefixList="code ds kind rw saml samlp typens #default xsd xsi" xmlns:ec="http://www.w3.org/2001/10/xml-exc-c14n#"/><o:p></o:p></p><p class=MsoNormal> </ds:Transform><o:p></o:p></p><p class=MsoNormal> </ds:Transforms><o:p></o:p></p><p class=MsoNormal> <ds:DigestMethod<o:p></o:p></p><p class=MsoNormal> Algorithm="http://www.w3.org/2000/09/xmldsig#sha1" xmlns:ds="http://www.w3.org/2000/09/xmldsig#"/><o:p></o:p></p><p class=MsoNormal> <ds:DigestValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">vwj4EhSZP3eQtRIKY7qbOK25S1I=</ds:DigestValue><o:p></o:p></p><p class=MsoNormal> </ds:Reference><o:p></o:p></p><p class=MsoNormal> </ds:SignedInfo><o:p></o:p></p><p class=MsoNormal> <ds:SignatureValue xmlns:ds="http://www.w3.org/2000/09/xmldsig#">ThN1VFDHwVV2U5oxUYoseHQJufnzanYrsZmIBv/U8qMZ7/WEtSmTFun+hgFfsRKly2D8cMzBlQLrommhK24T69U0ARQiYtY2DAeypk5QiJiNyv8fozQHbhepkWJNAH6LtHGaAg1LLeFK2fkb4RXtlvugI7DA0Yd0hEM1OYhLypk=</ds:SignatureValue><o:p></o:p></p><p class=MsoNormal> <ds:KeyInfo xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><o:p></o:p></p><p class=MsoNormal> <ds:X509Data xmlns:ds="http://www.w3.org/2000/09/xmldsig#"><o:p></o:p></p><p class=MsoNormal> <ds:X509Certificate xmlns:ds="http://www.w3.org/2000/09/xmldsig#">MIIDjTCCAnWgAwIBAgIDBKs8MA0GCSqGSIb3DQEBBQUAMIGNMRkwFwYDVQQKExBWZXJpem9uIFdpcmVsZXNzMSAwHgYDVQQLExdOZXR3b3JrIFN1cHBvcnQgU3lzdGVtczELMAkGA1UEBhMCVVMxEzARBgNVBAgTCkNhbGlmb3JuaWExEzARBgNVBAcTClNvdXRoIExha2UxFzAVBgNVBAMTDlNBTkUgTWFzdGVyIENBMB4XDTA2MTIwNDE3MTIxMFoXDTExMTIwNDE3MTIxMFowgZgxGTAXBgNVBAoTEFZlcml6b24gV2lyZWxlc3MxIDAeBgNVBAsTF05ldHdvcmsgU3VwcG9ydCBTeXN0ZW1zMQswCQYDVQQGEwJVUzETMBEGA1UECBMKQ2FsaWZvcm5pYTETMBEGA1UEBxMKU291dGggTGFrZTEiMCAGA1UEAxMZdHhzbHNhbmVkNC5uc3Mudnp3bmV0LmNvbTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEApC/VZ2YWUAb8acgS9Jbhb371Fb4TQgPVeIWiz2CtjmsOTSeIhDqdJWXd4RP21fqUToTWNW/l9IAQuOWxsQcvRZTy8aOSMrYU2M2Pw4AU0iVAj83DgSY8Z/jg7wXX4Lgfu/zadmNvSaTnkmojvWttlpvUttJLpTa0YaZrLg0YnyECAwEAAaNtMGswOQYDVR0RBDIwMIIcc2FuZTUtZGV2LnZoLmVuZy52endjb3JwLmNvbYIKdHhzbHNhbmVkNIcECtfUGTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBQ+u2upm9M0Qjpk3wca1G46/CYedDANBgkqhkiG9w0BAQUFAAOCAQEAE1mwJUFj1qLS24EO081TEezh+MYMB4KIAqTpQC2xSH0LWAHirHgUjnLwKmRAsiXDvA+WdTNVDTeP4T54GH67B7TLW0vn/Gp4ISGrAzMUcSmKoAzGtJVXWBK7U/x0Jle/vAai/HcHPIwxc7M68hxPFk5CebxTEU233XZN2kFGrwbo7so/SHnO+Uy0EjQVbSuzDf+vGIbVyRCLULcp+2ZFj/NN54Zoz/9FsMLYI5AXlv37jEvI5CMjSsmQvLEwGJMkiUcI0YNfoduDZ/21EzEKHtUC54L3QRLBEsFdQ1MlrwAJLfgoq813n8DkufKRjn1hvbdDLPWhOqO77RP0vOfVrA==</ds:X509Certificate><o:p></o:p></p><p class=MsoNormal> </ds:X509Data><o:p></o:p></p><p class=MsoNormal> </ds:KeyInfo><o:p></o:p></p><p class=MsoNormal> </ds:Signature><o:p></o:p></p><p class=MsoNormal> </saml:Assertion><o:p></o:p></p><p class=MsoNormal></samlp:Response><o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal>Anyone know where is the problem? Or could anybody give me a correct saml response so that I can make sure my code is written in right way?<o:p></o:p></p><p class=MsoNormal>Thanks.<o:p></o:p></p><p class=MsoNormal>----------<o:p></o:p></p><p class=MsoNormal>Best Regards,<o:p></o:p></p><p class=MsoNormal>Li Run<o:p></o:p></p><p class=MsoNormal><o:p> </o:p></p><p class=MsoNormal><o:p> </o:p></p></div></body></html>