File tree Expand file tree Collapse file tree 2 files changed +27
-11
lines changed
Expand file tree Collapse file tree 2 files changed +27
-11
lines changed Original file line number Diff line number Diff line change @@ -68,9 +68,25 @@ public void TestSamlResponseValidator()
6868 Assert . IsTrue ( samlresp . GetEmail ( ) == "test@example.com" ) ;
6969
7070 Assert . IsTrue ( samlresp . GetCustomAttribute ( "uid" ) == "test" ) ;
71- }
72-
73- [ TestMethod ]
71+ }
72+
73+ [ TestMethod ]
74+ public void TestSamlSignoutResponseValidator ( )
75+ {
76+ //this test's cert and signature borrowed from https://github.com/boxyhq/jackson/
77+
78+ var cert = @"-----BEGIN CERTIFICATE-----
79+ MIIDBzCCAe+gAwIBAgIJcp0xLOhRU0fTMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNVBAMTFmRldi10eWo3cXl6ei5hdXRoMC5jb20wHhcNMTkwMzI3MTMyMTQ0WhcNMzIxMjAzMTMyMTQ0WjAhMR8wHQYDVQQDExZkZXYtdHlqN3F5enouYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyr2LHhkTEf5xO+mGjZascQ9bfzcSDmjyJ6RxfD9rAJorqVDIcq+dEtxDvo0HWt/bccX+9AZmMiqCclLRyv7Sley7BkxYra5ym8mTwmaZqUZbWyCQ15Hpq6G27yrWk8V6WKvMhJoxDqlgFh08QDOxBy5jCzwxVyFKDchJiy1TflLC8dFJLcmszQsrvl3enbQyYy9XejgniugJKElZMZknFF9LmcQWeCmwDG+2w6HcMZIXPny9Cl5GZra7wt/EWg3iwNw5ZqP41Hulf9fhilJs3bVehnDgftQTKyTUBEfCDxzaIsEmpPWAqTg5IIEKkHX4/1Rm+7ltxg+n0pIXxUrtCQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRcb2UMMqwD9zCk3DOWnx/XwfKd5DAOBgNVHQ8BAf8EBAMCAoQwDQYJKoZIhvcNAQELBQADggEBAFE1FG/u0eYHk/R5a8gGiPgazEjmQUSMlBxjhhTU8bc0X/oLyCfJGdoXQKJVtHgKAIcvCtrHBjKDy8CwSn+J1jTMZklnpkhvXUHiEj1ViplupwuXblvhEXR2+Bkly57Uy1qoFvKHCejayRWsDaG062kEQkt5k1FtVatUGS6labThHjr8K2RyqTAYpXWqthR+wKTFLni9V2pjuoUOABBYeGTalnIOGvr/i5I+IjJDHND0x7wrveekFDI5yX9V8ZdMGiN2SkoXBMa5+o1aD3gtbi8c2HcOgjMsIzHGAj4dz/0syWfpkEkrbs7FURSvtuRLaNrH/2/rto0KgiWWuPKvm1w=
80+ -----END CERTIFICATE-----" ;
81+
82+ var samlresp = new Saml . SignoutResponse ( cert ) ;
83+ samlresp . LoadXml ( @"<samlp:LogoutResponse xmlns:samlp=""urn:oasis:names:tc:SAML:2.0:protocol"" ID=""_716cfa40a953610d9d68"" InResponseTo=""_a0089b303b86a97080ff"" Version=""2.0"" IssueInstant=""2022-03-25T07:50:52.110Z"" Destination=""http://localhost:3000/slo""><saml:Issuer xmlns:saml=""urn:oasis:names:tc:SAML:2.0:assertion"">urn:dev-tyj7qyzz.auth0.com</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=""#_716cfa40a953610d9d68""><Transforms><Transform Algorithm=""http://www.w3.org/2000/09/xmldsig#enveloped-signature""/><Transform Algorithm=""http://www.w3.org/2001/10/xml-exc-c14n#""/></Transforms><DigestMethod Algorithm=""http://www.w3.org/2000/09/xmldsig#sha1""/><DigestValue>Lk9TO/DGFFLLb+29H32O/scFccU=</DigestValue></Reference></SignedInfo><SignatureValue>altTmKkKqudi+jYBZd6bETdYRbTKerUiNxFugcoD7ZmdZsRlrcNir0ZLRq+NB6nTh4zeKwGiGs03FyAW0Wdr8vgl0GQ/KOGuUrpoFNI8EID1HYrghHZMR43CgauIHGg0dw8uSjQYUcU1ICVYG2trgXC9TR81g+3XVBPBnoJWS2yV8hPc6QdFAUdb/0qUn/GPdpSPOlb6/MMUQB+K+es6HzjQfU2PEV3aNarHrKHSyFRdBHFMgtt7rUE3eAev+3/Uwq6RPBFk9huUJ6F0MRDoVjpWNzD2jByTtRv7OYInDsEJKCwJ+6pOKGVK6GDXuXnuI8s6BNEalpNJkWR8BxFVbw==</SignatureValue><KeyInfo><X509Data><X509Certificate>MIIDBzCCAe+gAwIBAgIJcp0xLOhRU0fTMA0GCSqGSIb3DQEBCwUAMCExHzAdBgNVBAMTFmRldi10eWo3cXl6ei5hdXRoMC5jb20wHhcNMTkwMzI3MTMyMTQ0WhcNMzIxMjAzMTMyMTQ0WjAhMR8wHQYDVQQDExZkZXYtdHlqN3F5enouYXV0aDAuY29tMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAyr2LHhkTEf5xO+mGjZascQ9bfzcSDmjyJ6RxfD9rAJorqVDIcq+dEtxDvo0HWt/bccX+9AZmMiqCclLRyv7Sley7BkxYra5ym8mTwmaZqUZbWyCQ15Hpq6G27yrWk8V6WKvMhJoxDqlgFh08QDOxBy5jCzwxVyFKDchJiy1TflLC8dFJLcmszQsrvl3enbQyYy9XejgniugJKElZMZknFF9LmcQWeCmwDG+2w6HcMZIXPny9Cl5GZra7wt/EWg3iwNw5ZqP41Hulf9fhilJs3bVehnDgftQTKyTUBEfCDxzaIsEmpPWAqTg5IIEKkHX4/1Rm+7ltxg+n0pIXxUrtCQIDAQABo0IwQDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRcb2UMMqwD9zCk3DOWnx/XwfKd5DAOBgNVHQ8BAf8EBAMCAoQwDQYJKoZIhvcNAQELBQADggEBAFE1FG/u0eYHk/R5a8gGiPgazEjmQUSMlBxjhhTU8bc0X/oLyCfJGdoXQKJVtHgKAIcvCtrHBjKDy8CwSn+J1jTMZklnpkhvXUHiEj1ViplupwuXblvhEXR2+Bkly57Uy1qoFvKHCejayRWsDaG062kEQkt5k1FtVatUGS6labThHjr8K2RyqTAYpXWqthR+wKTFLni9V2pjuoUOABBYeGTalnIOGvr/i5I+IjJDHND0x7wrveekFDI5yX9V8ZdMGiN2SkoXBMa5+o1aD3gtbi8c2HcOgjMsIzHGAj4dz/0syWfpkEkrbs7FURSvtuRLaNrH/2/rto0KgiWWuPKvm1w=</X509Certificate></X509Data></KeyInfo></Signature><samlp:Status><samlp:StatusCode Value=""urn:oasis:names:tc:SAML:2.0:status:Success""/></samlp:Status></samlp:LogoutResponse>" ) ;
84+ Assert . IsTrue ( samlresp . IsValid ( ) ) ;
85+
86+ Assert . IsTrue ( samlresp . GetLogoutStatus ( ) == "Success" ) ;
87+ }
88+
89+ [ TestMethod ]
7490 public void TestSamlResponseValidatorAdvanced ( )
7591 {
7692 var cert = @"-----BEGIN CERTIFICATE-----
Original file line number Diff line number Diff line change @@ -86,13 +86,6 @@ private XmlNamespaceManager GetNamespaceManager()
8686
8787 return manager ;
8888 }
89- }
90-
91- public class Response : BaseResponse
92- {
93- public Response ( string certificateStr , string responseString = null ) : base ( certificateStr , responseString ) { }
94-
95- public Response ( byte [ ] certificateBytes , string responseString = null ) : base ( certificateBytes , responseString ) { }
9689
9790 /// <summary>
9891 /// Checks the validity of SAML response (validate signature, check expiration date etc)
@@ -119,7 +112,14 @@ private bool IsExpired()
119112 DateTime . TryParse ( node . Attributes [ "NotOnOrAfter" ] . Value , out expirationDate ) ;
120113 }
121114 return DateTime . UtcNow > expirationDate . ToUniversalTime ( ) ;
122- }
115+ }
116+ }
117+
118+ public class Response : BaseResponse
119+ {
120+ public Response ( string certificateStr , string responseString = null ) : base ( certificateStr , responseString ) { }
121+
122+ public Response ( byte [ ] certificateBytes , string responseString = null ) : base ( certificateBytes , responseString ) { }
123123
124124 /// <summary>
125125 /// returns the User's login
You can’t perform that action at this time.
0 commit comments