Skip to content

Instantly share code, notes, and snippets.

@evanmiller67
Created September 18, 2015 15:57
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save evanmiller67/dbd357f094970111fe3f to your computer and use it in GitHub Desktop.
Save evanmiller67/dbd357f094970111fe3f to your computer and use it in GitHub Desktop.
samlr/nokogiri issues
$ irb
~> Console extensions: wirble hirb ap rails2 rails3 pm interactive_editor
>> require 'samlr'
=> true
>> response = Samlr::Tools::ResponseBuilder.build({destination: 'foo_url', in_response_to: Samlr::Tools::uuid, name_id: '123456', not_on_or_after: Samlr::Tools::Timestamp.stamp(Time.now + 600), not_before: Samlr::Tools::Timestamp.stamp(Time.now - 600), audience: 'bar_peeps', attributes: { 'attr1' => 'attr1_val', 'attr2' => 'attr2_val'}})
=> "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n<samlp:Response Destination=\"foo_url\" ID=\"samlr-97bd62c0-5e1a-11e5-ae2e-44fb42fffe0e\" InResponseTo=\"samlr-97b1ca00-5e1a-11e5-ae2e-44fb42fffe0e\" IssueInstant=\"2015-09-18T15:33:21Z\" Version=\"2.0\" xmlns:saml=\"urn:oasis:names:tc:SAML:2.0:assertion\" xmlns:samlp=\"urn:oasis:names:tc:SAML:2.0:protocol\"><saml:Issuer>ResponseBuilder IdP</saml:Issuer><Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\"><SignedInfo><CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><Reference URI=\"#samlr-97bd62c0-5e1a-11e5-ae2e-44fb42fffe0e\"><Transforms><Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><InclusiveNamespaces PrefixList=\"#default samlp saml ds xs xsi\" xmlns=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></Transform></Transforms><DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><DigestValue>EB7Yw5cTw7zPJfWUPdcjAz2+tF0=</DigestValue></Reference></SignedInfo><SignatureValue>XHbkJLGgueI/WNP/R4daVHtSHf7OG6rn0rKna7k/Yvf6ihtaMY6aZ3jgNKo4XsHQBuV5Xnpasno2YoUsK0chpDu5QZuW78S/rqFmnb6rsicoYKeooZwML3985Mkq1On+NiRVus1jq1S9oSYPBpw5tOOtqcxJFnZ6lPOkommV5DqCbQal5Srg754WPMKArW4Gu4UASTYbdMxsAqt+h1QK86SG59QMhXld067SVkEiYdMOZBT8CwDonytHrUoh2JVHkmVbnKsvTb1W1yaE3rkDmaOWrr/xui+dG6BirT7A09n4jj/0wg5UG+HdLZ6Swg02iGDK52ovbiJEdRoxwHpmmwelRWlTpuV3JSrfIC2IvLoNaCOZ4fWog2LFwA6WDK3DQqiW3bSVsmQmgo+Cg6YJ1ZuJgE6CPgQmmv+fDl9ao68oIpO7Hsqld6h/C8GuATFefzw9xTtglVHETm/qefJg73KRORPOTYMkbAzWrDPdQyEZowI7UZQcQGa/oE4FF75Y71f4SVW74xKZehKJl3pHk59/VcrPBYmWLLNT1Zjtf4TOopvbXnouInWFAjnRihOrXBol9Atm2bZrq6DZN1Q5mwVK9Ni3zEdcT2lEflVe19gEVDjeWkvCYh+W6GFK51exnhHCYvW3U50xDlHdStmARvFy9bpgIffcQROwpKybHQw=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFGTCCAwGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwHhcNMTUwOTE4MTUzMzIxWhcNMzUwOTEzMTUzMzI2WjBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCQCRlwSXJnvRS3nwDZsJDbjkd7z8w+ylAI04mLJ6A6rnsOMlin+YN55JUtlE53j5ubKrYFh73ZHmCgXWNnJqYrOp6hGU14qhpsMlU6LsTbGFTPbEWPN4tcOZTZ2PYql9htud0ATOTU/Xme6cakS+o0lJWO2LbP0zoL79Qp30teAfD2FoAStda5Y6ahZkVqoCSkqXPWnT9aNGkRh749U6xylB1Pv4chKLYNSGKwkZgMizUN43ryDUk+P12YXhK4yQu9vJE3OYhEIL60NqeJsX3apTK2YOJ/6vV7l32gETtQWHwPFxnUWq95hDUc3lJNUV7Y5ldUQXopf+rj6qLfxg/nmgdMezH8VAHyYVC6WdXUqOCCS1lVsvaxLaDfQPKexVF3nFMPS2lXYVwmfMFqlk9jQIRje2kMHSAVBrJ3rWuaLOv3wf6takaGABWYvzNu9FWMHQNI2bMoh1BtABNfcKhAUkq2qNTShw9ZeBM0MPDqpIjR/12cED43qyWeMzJm+yYXhjTeDrxYuejZ4tNqUPke+EnCIo+/N1Cstyii2DZaE7tWBgW9QMDRD9wVoND4KA945Yz1HE7OKNHuoyYvZFRcE8YiMPVwrQKIljOikD8Ggg5BU6v43G/d5/RVPvhDhkcY/icS6XrsoDRXAb+DFYVs+Ih04iLK8ThE3l9Z52kQuwIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQCFWyWuXRyKKzl5xlZA4xdes4CgnNOoqYdrg3ivdQP/MRFNZBnnz9zKZxhrbS8pRFon0r9Ifv05RSIFdeegbwjpphZRtQOQRPkjBT9qcCImKvDlLkiLASZHIJNGFcg1laVsidCukgOQaPhU0m+1x9xFiYMqQw8EQbwTk1Jj6qW9xm8UR1VuZ2O4745yJ0uIu7GofZtiByklB+QLQoWL4644/vgzOp81pYmE5QRvws9pbIkTnKW6LuD8USwif/78yoh9U7YM6cS1rXhdplAdXspLXSEhZUbuHTatb/QXXkNcYLldBB1kxD6IuMfrt/REnDQq17wHjGPUTqWwcD13VAXB++58AwG+mftYLf/vgy0knzt3BjPVSQu3Ih82Q7ejQzLbteEwUYhDsgO/NCnYthrp46W7KGv/R6S2F/DYHLTqpVay1wOymZ/+ZlEuDgOGan3VMlYyeJnQ4lzNFR27PwQcNQeMxMaVGhSdbuiQ7HQKToAdNratfra9knjeUf0sXG7qlWCrPCV0hgh+D43+eoY/3IlFvrgZD14ngbrAe9BLTx7GzurpwtmaLQgEwA8xfE3ljsR5lfBhe3uBKXOSCMstAdOkMdIxJipt+3+rn//TGiRSowxDIWtJTH4jCBvKGY2/jLSRmBn9DQW+E/sz+2+41Tq/64suAWw384SrxTl7SQ==</X509Certificate></X509Data></KeyInfo></Signature><samlp:Status><samlp:StatusCode Value=\"urn:oasis:names:tc:SAML:2.0:status:Success\"/></samlp:Status><saml:Assertion ID=\"samlr-97bd62c0-5e1a-11e5-ae2f-44fb42fffe0e\" IssueInstant=\"2015-09-18T15:33:21Z\" Version=\"2.0\"><saml:Issuer>ResponseBuilder IdP</saml:Issuer><Signature xmlns=\"http://www.w3.org/2000/09/xmldsig#\"><SignedInfo><CanonicalizationMethod Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/><SignatureMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#rsa-sha1\"/><Reference URI=\"#samlr-97bd62c0-5e1a-11e5-ae2f-44fb42fffe0e\"><Transforms><Transform Algorithm=\"http://www.w3.org/2000/09/xmldsig#enveloped-signature\"/><Transform Algorithm=\"http://www.w3.org/2001/10/xml-exc-c14n#\"><InclusiveNamespaces PrefixList=\"#default samlp saml ds xs xsi\" xmlns=\"http://www.w3.org/2001/10/xml-exc-c14n#\"/></Transform></Transforms><DigestMethod Algorithm=\"http://www.w3.org/2000/09/xmldsig#sha1\"/><DigestValue>w2dNIWvfhdBtVIEJiPqMJWNiA9w=</DigestValue></Reference></SignedInfo><SignatureValue>BUpcJH8DTcXTzEnE3SQD5GPmfldX2pHr+K1sy4CoZmlea/O5Hs5gz3rahb6E7KiPHRguA1abLjjZ4eRgVmBmuVbPeMzIDbcALGXcZy5wKTK8ZzIYV56MGFgOojQ1Y35aaAsYtVNNUE/0YjgYFkHQp+hp2Q2v7KE30Dfmer9vOCYyBtUlcItJyz80MAzHm8bF4OWSXNryaI2FGvdbHhXIC8Xsy4G/A1KUp4VM53pqDmELco1o2TC92+/iPWFf5Ksf4MhCa8q2Rws1rce+l3ST3gUY7npRMCoghPYX1GcfialSg6BKxR84TZNpOxon/59nXJ2td1sXSm3Xij0Oe7Or1DEYtwSZp+xMqgRzc9vBW+HiAnLxQ8Y/S5B5Y7LqY8o/fwJ4W6ZrA+4izPmwf0O6HoYOMYijrrJngnc51/00TiHczDzrYacwT3fksOQ392Uwd2P41gHeO41dc/rAQWU1gnTOkUimTjDLHku4U7BzBkzWSHVfIFzNc/uLDCy4aTMG4s2x8xXYw9nKWcxLyVBLdqCcYihTlabLSw1A4PMSvcBrMeNgcs5kK0PG1sFr5mYMXpWackz3t2NXmGrcNfpqENSUHd40z6SP0a/1luQuhNiMzQ2KuLu1vGJCnXVQ/uBwXZMO8z69xybV2vEtDRbC/2lqnFyrMF5X8Bvhy+F+6nY=</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIFGTCCAwGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwHhcNMTUwOTE4MTUzMzE5WhcNMzUwOTEzMTUzMzI0WjBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/e0mRJKWkh0AshXmfxT6TeZiccOWcpFqUVRzqL/w0DIgXT/8eH1kKQ+zG7t4Zsa/RTzjgaUtZ1Tt1TYv0oFSLUZ+6NEjdCdeQTGU1vWBfR4YD/WMEIG0TfKbEr1obKcUDGgkfFRFp4izNAB6otJKhgI8FAt6Bj3j9N418+uvvfU25z33hJWODlyc6Hflhnh33myWSicdOURoF5n9+trESDUSoeBcq3rFkOf7YXZKCcq0axQHtiT4993G8n8obY4wzH9hnIL67PPJGsoEfl3BpKhSIx7rubtxtxA0MHs5suKyWMk7CElRVs+FyD+mRFXhRjK81wb7Y7Uz8p7qnGM9arkDVg4OeAtN7cgotB3dj4RuWheCFM8kIsz+UPziZHAhu21IdlSiAEvhFhaAg/41dVV0Ro+L/0kVRW9AVSmHMMmYS5eOd8fb/cidcVk6Fjj+cOyuJaqQihIvRKQ1t0O59xTB+8h2dCaTfHLIjBHNuDEiv6QR9g/WXOwRCXJHqMwOoQe2tmXnmEYitP13koBNnVtmnqAV1nvgYNfSJbgEOtylKYCyI0ukJrStaERzx/rQu60gGTdHSNoKzp27CIJlRFv5AiBHdm+8uPK58+6eMuPHT89z/QHWB/dQmIr7c1yn40361uO7qc/zoDmzdscxMQ4iegTE8cCTRpMGi8VokRwIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQCy3QQboAqO7bm66E+IG8Q2WWLG73Q/p9J8x1ezxqeSZ0buXhLpQsz3lGYTX9DaImh3gyalOhnzrcJ9T3LJ4O7btmam2+m8R7QtrZGkspYzrJMpWkaCleQ0TwI2qNPGuReWI44EmaU5f2cOmuRuUc0s4U26e20Xop81bPnPgXlzhNcmmK4Ic9PzWxTHVwFzMiqIvUovjC7MHl+mf2l33Wggm6TX4/dpVvNKAYVz0RJnvRfAf9Ux/l8w13nNE9AOqALi7R/2ffup8sIjMligygU9oO70xrA4Kq9hmS8voZPs8Uv/zIzJiNLtglsj+CAhAy3ZFuSYjFVk48NCQHZdBCEY9OCP/fNr9Y37ACoxxx9r/UXA15JxaufZUzhO3E/Qu6YWNjZchuPBI65PjW0pkNvBWjBEKBaiF5jShimM2jAYIpHukzSVrMlu7X0fTTjwfaRLlMZ+iUfB5TFb0wtGnH6Gj/On9Mo81nT6zr/GO9kkg2rrkl1xSMwPqmhdtGpDbxJB11pBogHA93xyvML2raP5a6xgEDoIOkSAULOiYQfXIYT9Sg80r/a2Tzg+ZpL9KbgjbkBGnRAyLIkTgAabgWCm6z1/SdwomApLgembAGv6/5VSPfGr98VbwuQHtbV0gLW1D3mM/tDxnly7fcfoQ5zdcD2QHLENBa5HqKQewXxICw==</X509Certificate></X509Data></KeyInfo></Signature><saml:Subject><saml:NameID Format=\"urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress\">123456</saml:NameID><saml:SubjectConfirmation Method=\"urn:oasis:names:tc:SAML:2.0:cm:bearer\"><saml:SubjectConfirmationData InResponseTo=\"samlr-97b1ca00-5e1a-11e5-ae2e-44fb42fffe0e\" NotOnOrAfter=\"2015-09-18T15:43:21Z\" Recipient=\"foo_url\"/></saml:SubjectConfirmation></saml:Subject><saml:Conditions NotBefore=\"2015-09-18T15:23:21Z\" NotOnOrAfter=\"2015-09-18T15:43:21Z\"><saml:AudienceRestriction><saml:Audience>bar_peeps</saml:Audience></saml:AudienceRestriction></saml:Conditions><saml:AuthnStatement AuthnInstant=\"2015-09-18T15:33:21Z\" SessionIndex=\"samlr-97bd62c0-5e1a-11e5-ae2f-44fb42fffe0e\"><saml:AuthnContext><saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef></saml:AuthnContext></saml:AuthnStatement><saml:AttributeStatement><saml:Attribute Name=\"attr1\"><saml:AttributeValue xmlns:xs=\"http://www.w3.org/2001/XMLSchema\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" xsi:type=\"xs:string\">attr1_val</saml:AttributeValue></saml:Attribute><saml:Attribute Name=\"attr2\"><saml:AttributeValue xsi:type=\"xs:string\">attr2_val</saml:AttributeValue></saml:Attribute></saml:AttributeStatement></saml:Assertion></samlp:Response>"
>> File.open('jruby_example.xml','w'){|f| f.write response }
=> 8439
>> exit
<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" Destination="foo_url" ID="samlr-97bd62c0-5e1a-11e5-ae2e-44fb42fffe0e" InResponseTo="samlr-97b1ca00-5e1a-11e5-ae2e-44fb42fffe0e" IssueInstant="2015-09-18T15:33:21Z" Version="2.0">
<saml:Issuer>ResponseBuilder IdP</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#samlr-97bd62c0-5e1a-11e5-ae2e-44fb42fffe0e">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default samlp saml ds xs xsi"/>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>EB7Yw5cTw7zPJfWUPdcjAz2+tF0=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>XHbkJLGgueI/WNP/R4daVHtSHf7OG6rn0rKna7k/Yvf6ihtaMY6aZ3jgNKo4XsHQBuV5Xnpasno2YoUsK0chpDu5QZuW78S/rqFmnb6rsicoYKeooZwML3985Mkq1On+NiRVus1jq1S9oSYPBpw5tOOtqcxJFnZ6lPOkommV5DqCbQal5Srg754WPMKArW4Gu4UASTYbdMxsAqt+h1QK86SG59QMhXld067SVkEiYdMOZBT8CwDonytHrUoh2JVHkmVbnKsvTb1W1yaE3rkDmaOWrr/xui+dG6BirT7A09n4jj/0wg5UG+HdLZ6Swg02iGDK52ovbiJEdRoxwHpmmwelRWlTpuV3JSrfIC2IvLoNaCOZ4fWog2LFwA6WDK3DQqiW3bSVsmQmgo+Cg6YJ1ZuJgE6CPgQmmv+fDl9ao68oIpO7Hsqld6h/C8GuATFefzw9xTtglVHETm/qefJg73KRORPOTYMkbAzWrDPdQyEZowI7UZQcQGa/oE4FF75Y71f4SVW74xKZehKJl3pHk59/VcrPBYmWLLNT1Zjtf4TOopvbXnouInWFAjnRihOrXBol9Atm2bZrq6DZN1Q5mwVK9Ni3zEdcT2lEflVe19gEVDjeWkvCYh+W6GFK51exnhHCYvW3U50xDlHdStmARvFy9bpgIffcQROwpKybHQw=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIFGTCCAwGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwHhcNMTUwOTE4MTUzMzIxWhcNMzUwOTEzMTUzMzI2WjBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCQCRlwSXJnvRS3nwDZsJDbjkd7z8w+ylAI04mLJ6A6rnsOMlin+YN55JUtlE53j5ubKrYFh73ZHmCgXWNnJqYrOp6hGU14qhpsMlU6LsTbGFTPbEWPN4tcOZTZ2PYql9htud0ATOTU/Xme6cakS+o0lJWO2LbP0zoL79Qp30teAfD2FoAStda5Y6ahZkVqoCSkqXPWnT9aNGkRh749U6xylB1Pv4chKLYNSGKwkZgMizUN43ryDUk+P12YXhK4yQu9vJE3OYhEIL60NqeJsX3apTK2YOJ/6vV7l32gETtQWHwPFxnUWq95hDUc3lJNUV7Y5ldUQXopf+rj6qLfxg/nmgdMezH8VAHyYVC6WdXUqOCCS1lVsvaxLaDfQPKexVF3nFMPS2lXYVwmfMFqlk9jQIRje2kMHSAVBrJ3rWuaLOv3wf6takaGABWYvzNu9FWMHQNI2bMoh1BtABNfcKhAUkq2qNTShw9ZeBM0MPDqpIjR/12cED43qyWeMzJm+yYXhjTeDrxYuejZ4tNqUPke+EnCIo+/N1Cstyii2DZaE7tWBgW9QMDRD9wVoND4KA945Yz1HE7OKNHuoyYvZFRcE8YiMPVwrQKIljOikD8Ggg5BU6v43G/d5/RVPvhDhkcY/icS6XrsoDRXAb+DFYVs+Ih04iLK8ThE3l9Z52kQuwIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQCFWyWuXRyKKzl5xlZA4xdes4CgnNOoqYdrg3ivdQP/MRFNZBnnz9zKZxhrbS8pRFon0r9Ifv05RSIFdeegbwjpphZRtQOQRPkjBT9qcCImKvDlLkiLASZHIJNGFcg1laVsidCukgOQaPhU0m+1x9xFiYMqQw8EQbwTk1Jj6qW9xm8UR1VuZ2O4745yJ0uIu7GofZtiByklB+QLQoWL4644/vgzOp81pYmE5QRvws9pbIkTnKW6LuD8USwif/78yoh9U7YM6cS1rXhdplAdXspLXSEhZUbuHTatb/QXXkNcYLldBB1kxD6IuMfrt/REnDQq17wHjGPUTqWwcD13VAXB++58AwG+mftYLf/vgy0knzt3BjPVSQu3Ih82Q7ejQzLbteEwUYhDsgO/NCnYthrp46W7KGv/R6S2F/DYHLTqpVay1wOymZ/+ZlEuDgOGan3VMlYyeJnQ4lzNFR27PwQcNQeMxMaVGhSdbuiQ7HQKToAdNratfra9knjeUf0sXG7qlWCrPCV0hgh+D43+eoY/3IlFvrgZD14ngbrAe9BLTx7GzurpwtmaLQgEwA8xfE3ljsR5lfBhe3uBKXOSCMstAdOkMdIxJipt+3+rn//TGiRSowxDIWtJTH4jCBvKGY2/jLSRmBn9DQW+E/sz+2+41Tq/64suAWw384SrxTl7SQ==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ID="samlr-97bd62c0-5e1a-11e5-ae2f-44fb42fffe0e" IssueInstant="2015-09-18T15:33:21Z" Version="2.0">
<saml:Issuer>ResponseBuilder IdP</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#samlr-97bd62c0-5e1a-11e5-ae2f-44fb42fffe0e">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default samlp saml ds xs xsi"/>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>w2dNIWvfhdBtVIEJiPqMJWNiA9w=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>BUpcJH8DTcXTzEnE3SQD5GPmfldX2pHr+K1sy4CoZmlea/O5Hs5gz3rahb6E7KiPHRguA1abLjjZ4eRgVmBmuVbPeMzIDbcALGXcZy5wKTK8ZzIYV56MGFgOojQ1Y35aaAsYtVNNUE/0YjgYFkHQp+hp2Q2v7KE30Dfmer9vOCYyBtUlcItJyz80MAzHm8bF4OWSXNryaI2FGvdbHhXIC8Xsy4G/A1KUp4VM53pqDmELco1o2TC92+/iPWFf5Ksf4MhCa8q2Rws1rce+l3ST3gUY7npRMCoghPYX1GcfialSg6BKxR84TZNpOxon/59nXJ2td1sXSm3Xij0Oe7Or1DEYtwSZp+xMqgRzc9vBW+HiAnLxQ8Y/S5B5Y7LqY8o/fwJ4W6ZrA+4izPmwf0O6HoYOMYijrrJngnc51/00TiHczDzrYacwT3fksOQ392Uwd2P41gHeO41dc/rAQWU1gnTOkUimTjDLHku4U7BzBkzWSHVfIFzNc/uLDCy4aTMG4s2x8xXYw9nKWcxLyVBLdqCcYihTlabLSw1A4PMSvcBrMeNgcs5kK0PG1sFr5mYMXpWackz3t2NXmGrcNfpqENSUHd40z6SP0a/1luQuhNiMzQ2KuLu1vGJCnXVQ/uBwXZMO8z69xybV2vEtDRbC/2lqnFyrMF5X8Bvhy+F+6nY=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIFGTCCAwGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwHhcNMTUwOTE4MTUzMzE5WhcNMzUwOTEzMTUzMzI0WjBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQC/e0mRJKWkh0AshXmfxT6TeZiccOWcpFqUVRzqL/w0DIgXT/8eH1kKQ+zG7t4Zsa/RTzjgaUtZ1Tt1TYv0oFSLUZ+6NEjdCdeQTGU1vWBfR4YD/WMEIG0TfKbEr1obKcUDGgkfFRFp4izNAB6otJKhgI8FAt6Bj3j9N418+uvvfU25z33hJWODlyc6Hflhnh33myWSicdOURoF5n9+trESDUSoeBcq3rFkOf7YXZKCcq0axQHtiT4993G8n8obY4wzH9hnIL67PPJGsoEfl3BpKhSIx7rubtxtxA0MHs5suKyWMk7CElRVs+FyD+mRFXhRjK81wb7Y7Uz8p7qnGM9arkDVg4OeAtN7cgotB3dj4RuWheCFM8kIsz+UPziZHAhu21IdlSiAEvhFhaAg/41dVV0Ro+L/0kVRW9AVSmHMMmYS5eOd8fb/cidcVk6Fjj+cOyuJaqQihIvRKQ1t0O59xTB+8h2dCaTfHLIjBHNuDEiv6QR9g/WXOwRCXJHqMwOoQe2tmXnmEYitP13koBNnVtmnqAV1nvgYNfSJbgEOtylKYCyI0ukJrStaERzx/rQu60gGTdHSNoKzp27CIJlRFv5AiBHdm+8uPK58+6eMuPHT89z/QHWB/dQmIr7c1yn40361uO7qc/zoDmzdscxMQ4iegTE8cCTRpMGi8VokRwIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQCy3QQboAqO7bm66E+IG8Q2WWLG73Q/p9J8x1ezxqeSZ0buXhLpQsz3lGYTX9DaImh3gyalOhnzrcJ9T3LJ4O7btmam2+m8R7QtrZGkspYzrJMpWkaCleQ0TwI2qNPGuReWI44EmaU5f2cOmuRuUc0s4U26e20Xop81bPnPgXlzhNcmmK4Ic9PzWxTHVwFzMiqIvUovjC7MHl+mf2l33Wggm6TX4/dpVvNKAYVz0RJnvRfAf9Ux/l8w13nNE9AOqALi7R/2ffup8sIjMligygU9oO70xrA4Kq9hmS8voZPs8Uv/zIzJiNLtglsj+CAhAy3ZFuSYjFVk48NCQHZdBCEY9OCP/fNr9Y37ACoxxx9r/UXA15JxaufZUzhO3E/Qu6YWNjZchuPBI65PjW0pkNvBWjBEKBaiF5jShimM2jAYIpHukzSVrMlu7X0fTTjwfaRLlMZ+iUfB5TFb0wtGnH6Gj/On9Mo81nT6zr/GO9kkg2rrkl1xSMwPqmhdtGpDbxJB11pBogHA93xyvML2raP5a6xgEDoIOkSAULOiYQfXIYT9Sg80r/a2Tzg+ZpL9KbgjbkBGnRAyLIkTgAabgWCm6z1/SdwomApLgembAGv6/5VSPfGr98VbwuQHtbV0gLW1D3mM/tDxnly7fcfoQ5zdcD2QHLENBa5HqKQewXxICw==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">123456</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData InResponseTo="samlr-97b1ca00-5e1a-11e5-ae2e-44fb42fffe0e" NotOnOrAfter="2015-09-18T15:43:21Z" Recipient="foo_url"/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotBefore="2015-09-18T15:23:21Z" NotOnOrAfter="2015-09-18T15:43:21Z">
<saml:AudienceRestriction>
<saml:Audience>bar_peeps</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2015-09-18T15:33:21Z" SessionIndex="samlr-97bd62c0-5e1a-11e5-ae2f-44fb42fffe0e">
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
<saml:Attribute Name="attr1">
<saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">attr1_val</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="attr2">
<saml:AttributeValue xsi:type="xs:string">attr2_val</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol">
<saml:Assertion ID="my_good_id" Version="2.0">
<saml:AttributeStatement>
<saml:Attribute Name="attr1">
<saml:AttributeValue xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="xs:string">attr1_val</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="attr2">
<saml:AttributeValue xsi:type="xs:string">attr2_val</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" ID="samlr-1d2f104e-5e1a-11e5-9fe5-44fb42fffe0e" InResponseTo="samlr-1d2cbc40-5e1a-11e5-9fe5-44fb42fffe0e" Version="2.0" IssueInstant="2015-09-18T15:29:55Z" Destination="foo_url">
<saml:Issuer>ResponseBuilder IdP</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#samlr-1d2f104e-5e1a-11e5-9fe5-44fb42fffe0e">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default samlp saml ds xs xsi"/>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>2uBe7UdNPKWAltRacjT6WEcZEWA=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>T8mtAx/oLEoEL4ubbnl2V6cBnC9I9h2T0f9LDW0Eq0eqPYY+LUtLu+wjngw1SFE+s8azaHNmEotZNh+VHvyqjl3AOAyJaVRBfo5KeqRou0FOQpMyEMfMe1wzh5DrywXPGovmhO2N02Pa28Pi0qQlDf6jm5HjyFasX9LUHAcADoBPjXjr/Gh5iWaeU5mTQ+R541W7a9ov54G8uHH5YX/H+BjfziznLRx7j6ySi4gVNLHOU2GUDhrF8fgxiJZ3uZn3qS9z8w1zeczEYSwfVnkDXIv+qd7+6QDSdDlWyzXPiL7zufQmBRjq+bJ74Xu9x7sOQN3EKeEIxEKIKILx4dABnTNPjfO56+4ZCcw9V0M1GwEfia4x4IBP6KyE5elp8sOU/EEz2HlvaVMm7c4C/tFRPFr5+A0LECdblGIDef1JNnMKNSbj2DGyjwJVQGgM9qkHDP+peC7vWQqoug9b3fXotCYmJwR+uYCDJFDJrudrdx/Rf270qB8XwbXJRrPa/N1157xHdeCSz+si/N+/xUcXDb7MFAhB4NBVJBopVf4URBJG/TBFTdT5hqQOyurICGwFndS3h1QKHr3mWpdQwBq9/DOe/h6wmu/ARmt5y9xe/QFTrIi/0H8icH0F/ab77rIacXJT9Pv0Kxq7dRyUdlrny5gxP4/ACbDHsMhJBThyT20=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIFGTCCAwGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwHhcNMTUwOTE4MTUyOTUzWhcNMzUwOTEzMTUyOTU4WjBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQClVKtGcYx87/I94/moP6y3PVqRomW0svvHUVJb1tHzp1HxJ/EmPOJXpq/AAFqD1PKtyaSPSeO9DpJB/L6kUAf9k0xf13OtIiTdvbBzra111bbEKMq3bMcIj7tNBzbL0ZeGJe4FTJ13Rr+qIaQreEL5/1nteRDbS8F8Tn2zZ1pZ94xKXzTN5vpsBQd3RmYcNnvTIeu/yx2x0yxgFb8F8EDyMRpTnWB7GJGMvBiRoHxdQLpKftaRKjLmOD7aWV1JhaxQkt6kPJOuohdEXce2W3Fpm7FabhnppJuzKjSmkgzoTu1E9KWxXFWu9f9qtkM8VVAQ52rytAzCv5Dxio9pTHJFFNObBgLGiKMUgw6hzK+XSq+z/YdNTE5EeWJ5z0lpH5mGRFtDnOaPau3zEqi1kxxY2fObs7bdUWsPIJE4zhDLt4jjOc3JOIKdMfen45OJrLSIk+TyuFSnHrLMV4845XnsklR6gu6UxVRKi4tucypCZd9xn92TClGA3rO5R2TLFL7TkJAFgK+M+YnYM7PTSItc2yZ/DA44neRR+fcTuMynB4vWFTeElBiIF7zlIgHJ1cGOmlIbQjb+L3rU7+eF25txhgA9395Kyh9Q8j6VoXeCKAnBKm8BISFqtkjEpNkr5YT/z9Hvg+8PvjRLuGBKZWkE5hpgCSFn+UOj1Z5DeIXs9wIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQAhnCN/FCNrXNIXphCJ6JyG0tTUud60STL1Fo6vTU9XUwCsjnXa/qMds2zz6y7Xh33kQJpbx+8xHJ94Dil0Wpf1MxcJGdqsZZaZTzKMLeb73u1Ke1sQObmZyE/1BasXgq/F6KJ0UHZfYnVY5tQ696sZ/pz1AEXsXYL4mrU8OxV8VYrOcS2ilxtVGgCs3OSbm6ontftQkEDu3Kd98PkfK0Ao/oJq/SwxGi50ai/K0+mgF2NVl/OGlMLpSpu7RLUyoFuVyVJV498ajfbLPltBT5htWRS0IiuBzDtH+RVqt5lAANuvSA/OXBuBYybw18Sz4UIM6n6WNKX+Lt/trgWzBLXUdJZxcIAws8eizyZw8hynZwvljo9+NIS0J9mnr2Qs4hn2NMx4EkLlG7c9IffJcVfd1oiTQTER87pj06z2Y+3bOzJnujcMAzUpRegbHvbv1i3tZqJ+LcbwiVJsvODSuiCcZvtgFdghpMAWyI7PAjr7S28QlabAcIITZ715sXzDIMNbshNQ3tHt6iC7JnSGR+6TFhFH8lBvn0grwh2VFE/moSdgsFQecAHUxzYcwAZTMxPSdW6sAgz6UOWSpLQu6weZpcaYsRxz60uP8/8N7lu0VdhsbutPCCDz52jJIoxyTnXwpi2SkVoQItegmyyRgXHPzS5/biPrkPrBTDtY6cdRbg==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<samlp:Status>
<samlp:StatusCode Value="urn:oasis:names:tc:SAML:2.0:status:Success"/>
</samlp:Status>
<saml:Assertion ID="samlr-1d2f11fc-5e1a-11e5-9fe5-44fb42fffe0e" IssueInstant="2015-09-18T15:29:55Z" Version="2.0">
<saml:Issuer>ResponseBuilder IdP</saml:Issuer>
<Signature xmlns="http://www.w3.org/2000/09/xmldsig#">
<SignedInfo>
<CanonicalizationMethod Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#"/>
<SignatureMethod Algorithm="http://www.w3.org/2000/09/xmldsig#rsa-sha1"/>
<Reference URI="#samlr-1d2f11fc-5e1a-11e5-9fe5-44fb42fffe0e">
<Transforms>
<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature"/>
<Transform Algorithm="http://www.w3.org/2001/10/xml-exc-c14n#">
<InclusiveNamespaces xmlns="http://www.w3.org/2001/10/xml-exc-c14n#" PrefixList="#default samlp saml ds xs xsi"/>
</Transform>
</Transforms>
<DigestMethod Algorithm="http://www.w3.org/2000/09/xmldsig#sha1"/>
<DigestValue>0bH9WDd5k1Zq2vflxdYAbWvHUMo=</DigestValue>
</Reference>
</SignedInfo>
<SignatureValue>YI4oT/UmczWB3Mixj7OReC4FBOw4KjXDcVdD2JVciwUfuziQVUgxf84t/osDuZcoGxVT9A6Nh2J8pL8fgJKyZT/z1cZEEbu+Bqw5Mh5cIHXdHdAYoLmAcrGllotto/kSwFSVkNUt7IAPk8Sa0G7yerrUp3zBnkSGY79R6saIeebkbdbopx8bmZXy8mpIaMdBlW/D0NSGxTLsTp80rBxUYbiVyZt4dsHqZ16liHG1WKnzP1H3pxq793/R1wh9ta+1RSmKcyUSXo47t/l9uYTRrlxGrb0k4BvoNyPsKZZnlL8hMpBX2so+xfqu0/MejX8eOZcAN3jGDsc28XKR6ib+s+t/xyIuljDxlKefUZ5Y0f7z1OdV29ToBnQXlcSXPHN4m4FhQOdr6l9QulgQC3RNiNnKokSqbngHa02M2IC1OiiwyRmnznYu9xqDAypiFSNmf03HjwZ/oWe5OS1xfCzQNAnsBVOcDWaaeZSydnpRTJQs+qnsNrpQ8AujNwB9AymLhD4rLFlpoEkfmvj2Mo7u63JS4XmXht7TSu9xJzieJ8bbJiEBt5WLKPSIB8PjccRETp2eV0EaXPNk2Myn0Cbw3cDk+BoOv74I+fvcdPmBA41S3YVk7x8fweIrASOVZYCY18cYMF3QyCHJvMtqwjc3oXF462XTKi5A/XCMfd8ztBA=</SignatureValue>
<KeyInfo>
<X509Data>
<X509Certificate>MIIFGTCCAwGgAwIBAgIBATANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwHhcNMTUwOTE4MTUyOTUxWhcNMzUwOTEzMTUyOTU2WjBQMQswCQYDVQQGEwJVUzEUMBIGA1UECgwLZXhhbXBsZS5vcmcxHjAcBgNVBAsMFVNhbWxyIFJlc3BvbnNlQnVpbGRlcjELMAkGA1UEAwwCQ0EwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQCf4OIzZYG73ypb6R+O3I+h5662xJTBHY7FVt00McM46dF9D4jHovY7c3XTkkhPPZGW9B+zEuIb3XGK7I2zJqgD6RvCdo+53kCe/w87tOMxhh0WXnlthHJqGK7k27kBI3IxsFC0PQkO/ghut53m3QkLfcFUmtIrhRivkYIA51inllvjP+cMGQK45rckXyU7ujJGvgbT48Vzptg1IkZ5kcM7YD3qBChkvMbTHu/aCBjmUN9iRHO8/Rv7wdwWN+VoxYn4G+lCYx4h3+96uJ30PqUYl+2NQWVyJ8STf3ZeNBbhuK4Dtv9R2EW6hlwmJS4qCdHSfd/Yc0XkOkSQ1CnrG/5Be3ixi3qAPOThL0102bhHSojqdO0T49bbqLgEnyakMF+TFdfETwk6Rpw6FZC45B7nbzQkE7nzHQ7HPeL9i376swnMW5HwnICnRqDzfzPOB4oa4l9n0vQuWLVx/P63FsvGESjDn+wsCRh0v9IQj0NEIBt5kiO8YE4EDCxHAQpvBKOLhosZW8ayoXqIJwg2LNKwQrI4J0UCiKiMGA/8nzwESEKuiSWGJ6FbsY38KIuJD5FcWpxjkjuHo3eeWUDdbMHMjUXQAkYM00ugDJmJLrX5Yazmsd2B1NFX1Fm+7nBxW0WIWkm3Y4dlNHQ8MwCaNO/WOlUcTZDdnj78G5lFBzgooQIDAQABMA0GCSqGSIb3DQEBBQUAA4ICAQB5fqNXpEaciUEXEGWTTbqhBCy+L/r1hUa6U1wJGxebZVibC9TmCeMKI624Q0B2ad0j7SYy9yw2T+V3Tu4YPf1bGy2msl0UiVD+Uj37pfPe7OZhllljOy3DkMMepYCNLR41koA1pSglCTifMyX6ezhjMuOleFJ053nbNMoK+v9szMVHiLG2wGqybR0xV1qSupu7pSEe8bjv4MUnjOuRRYnLEzRmKVN/iOe6pY1j+o280SDGp6M7EwOPo/BNIv6UDVmhXwQFV+1LXvxnIbSZyoPIVTzJptLFgksaxEBmbgtd8ZmIhWsxNZFSSDWCB7LhUxB97qG7h7BZ/at5HP5WpZScmvl1rvk1x/CEoDFJXaJEjrFRul+QeVbYG2lqn9iqfrTjbJ+VoZ0QZpzHsBZH1VDtsKDkDMLoSktfhKMiIG3L7RUH0Sz8eFfpXEkze/c75rudeRuKdiCjH6u9tbefY6WMVgly7JYFxbJktlQCKs6aovYuGyNEL40Edmq30XMiTcT1VFqR8/jJR3AF6wcIZD+E4P3f3HEJGn647xGChaje5TjaTk5GIIo0FdJcpKFJ9YGLfDz31q+OWieeFqvOofoBcRqzE2QXf1XykkO9oOlqFNJIfY6B0nO5QkWi+DALRnt1r6gVtsyaoFYgVFYadYGAPPXchxkvNefy963RRVDFUA==</X509Certificate>
</X509Data>
</KeyInfo>
</Signature>
<saml:Subject>
<saml:NameID Format="urn:oasis:names:tc:SAML:1.1:nameid-format:emailAddress">123456</saml:NameID>
<saml:SubjectConfirmation Method="urn:oasis:names:tc:SAML:2.0:cm:bearer">
<saml:SubjectConfirmationData InResponseTo="samlr-1d2cbc40-5e1a-11e5-9fe5-44fb42fffe0e" NotOnOrAfter="2015-09-18T15:39:55Z" Recipient="foo_url"/>
</saml:SubjectConfirmation>
</saml:Subject>
<saml:Conditions NotBefore="2015-09-18T15:19:55Z" NotOnOrAfter="2015-09-18T15:39:55Z">
<saml:AudienceRestriction>
<saml:Audience>bar_peeps</saml:Audience>
</saml:AudienceRestriction>
</saml:Conditions>
<saml:AuthnStatement AuthnInstant="2015-09-18T15:29:55Z" SessionIndex="samlr-1d2f11fc-5e1a-11e5-9fe5-44fb42fffe0e">
<saml:AuthnContext>
<saml:AuthnContextClassRef>urn:oasis:names:tc:SAML:2.0:ac:classes:Password</saml:AuthnContextClassRef>
</saml:AuthnContext>
</saml:AuthnStatement>
<saml:AttributeStatement>
<saml:Attribute Name="attr1">
<saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">attr1_val</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="attr2">
<saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">attr2_val</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
<?xml version="1.0" encoding="UTF-8"?>
<samlp:Response xmlns:samlp="urn:oasis:names:tc:SAML:2.0:protocol" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion">
<saml:Assertion ID="my_good_id" Version="2.0">
<saml:AttributeStatement>
<saml:Attribute Name="attr1">
<saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">attr1_val</saml:AttributeValue>
</saml:Attribute>
<saml:Attribute Name="attr2">
<saml:AttributeValue xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xs="http://www.w3.org/2001/XMLSchema" xsi:type="xs:string">attr2_val</saml:AttributeValue>
</saml:Attribute>
</saml:AttributeStatement>
</saml:Assertion>
</samlp:Response>
require 'nokogiri'
NS_MAP = {
"c14n" => "http://www.w3.org/2001/10/xml-exc-c14n#",
"ds" => "http://www.w3.org/2000/09/xmldsig#",
"saml" => "urn:oasis:names:tc:SAML:2.0:assertion",
"samlp" => "urn:oasis:names:tc:SAML:2.0:protocol",
"md" => "urn:oasis:names:tc:SAML:2.0:metadata",
"xsi" => "http://www.w3.org/2001/XMLSchema-instance",
"xs" => "http://www.w3.org/2001/XMLSchema"
}
attributes = {
"attr1" => "attr1_val",
"attr2" => "attr2_val"
}
skip_assertion = false
builder = Nokogiri::XML::Builder.new(:encoding => "UTF-8") do |xml|
xml.Response("xmlns:samlp" => NS_MAP["samlp"]) do
xml.doc.root.add_namespace_definition("saml", NS_MAP["saml"])
xml.doc.root.namespace = xml.doc.root.namespace_definitions.find { |ns| ns.prefix == "samlp" }
unless skip_assertion
xml["saml"].Assertion("xmlns:saml" => NS_MAP["saml"], "ID" => 'my_good_id', "Version" => "2.0") do
unless attributes.empty?
xml["saml"].AttributeStatement do
attributes.keys.sort.each do |name|
xml["saml"].Attribute("Name" => name) do
values = Array(attributes[name])
values.each do |value|
xml["saml"].AttributeValue(value, "xmlns:xsi" => NS_MAP["xsi"], "xmlns:xs" => NS_MAP["xs"], "xsi:type" => "xs:string")
end
end
end
end
end
end
end
end
end
File.open('nokogiri_example.xml','w'){|f| f.write(builder.to_xml)}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment