private void RunValidationTests(SecurityTokenDescriptor tokenDescriptor, SecurityToken securityToken, SecurityKey key, int iterations, bool display = true) { // Create jwts using wif // Create Saml2 tokens // Create Saml tokens DateTime started; string validating = "Validating, signed: '{0}', '{1}' Tokens. Time: '{2}'"; SetReturnSecurityTokenResolver str = new Test.SetReturnSecurityTokenResolver(securityToken, key); SecurityTokenHandlerConfiguration tokenHandlerConfiguration = new SecurityTokenHandlerConfiguration() { IssuerTokenResolver = str, SaveBootstrapContext = true, CertificateValidator = AlwaysSucceedCertificateValidator.New, AudienceRestriction = new AudienceRestriction(AudienceUriMode.Never), IssuerNameRegistry = new SetNameIssuerNameRegistry(Issuers.GotJwt), }; Saml2SecurityTokenHandler samlTokenHandler = new Saml2SecurityTokenHandler(); Saml2SecurityToken token = samlTokenHandler.CreateToken(tokenDescriptor) as Saml2SecurityToken; StringBuilder sb = new StringBuilder(); XmlWriter writer = XmlWriter.Create(sb); samlTokenHandler.WriteToken(writer, token); writer.Flush(); writer.Close(); string tokenXml = sb.ToString(); samlTokenHandler.Configuration = tokenHandlerConfiguration; started = DateTime.UtcNow; for (int i = 0; i < iterations; i++) { StringReader sr = new StringReader(tokenXml); XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create(sr)); reader.MoveToContent(); SecurityToken saml2Token = samlTokenHandler.ReadToken(reader); samlTokenHandler.ValidateToken(saml2Token); } if (display) { Console.WriteLine(string.Format(validating, "Saml2SecurityTokenHandler", iterations, DateTime.UtcNow - started)); } JwtSecurityTokenHandler jwtTokenHandler = new JwtSecurityTokenHandler(); JwtSecurityToken jwt = jwtTokenHandler.CreateToken(tokenDescriptor) as JwtSecurityToken; jwtTokenHandler.Configuration = tokenHandlerConfiguration; started = DateTime.UtcNow; for (int i = 0; i < iterations; i++) { jwtTokenHandler.ValidateToken(jwt.RawData); } if (display) { Console.WriteLine(string.Format(validating, "JwtSecurityTokenHandle - ValidateToken( jwt.RawData )", iterations, DateTime.UtcNow - started)); } jwt = jwtTokenHandler.CreateToken(tokenDescriptor) as JwtSecurityToken; sb = new StringBuilder(); writer = XmlWriter.Create(sb); jwtTokenHandler.WriteToken(writer, jwt); writer.Flush(); writer.Close(); tokenXml = sb.ToString(); started = DateTime.UtcNow; for (int i = 0; i < iterations; i++) { StringReader sr = new StringReader(tokenXml); XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create(sr)); reader.MoveToContent(); SecurityToken jwtToken = jwtTokenHandler.ReadToken(reader); jwtTokenHandler.ValidateToken(jwtToken); } if (display) { Console.WriteLine(string.Format(validating, "JwtSecurityTokenHandle - ReadToken( reader ), ValidateToken( jwtToken )", iterations, DateTime.UtcNow - started)); } started = DateTime.UtcNow; for (int i = 0; i < iterations; i++) { StringReader sr = new StringReader(tokenXml); XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader(XmlReader.Create(sr)); reader.MoveToContent(); JwtSecurityToken jwtToken = jwtTokenHandler.ReadToken(reader) as JwtSecurityToken; jwtTokenHandler.ValidateToken(jwtToken.RawData); } if (display) { Console.WriteLine(string.Format(validating, "JwtSecurityTokenHandle - ReadToken( reader ), ValidateToken( jwtToken.RawData )", iterations, DateTime.UtcNow - started)); } }
private void RunValidationTests( SecurityTokenDescriptor tokenDescriptor, SecurityToken securityToken, SecurityKey key, int iterations, bool display = true ) { // Create jwts using wif // Create Saml2 tokens // Create Saml tokens DateTime started; string validating = "Validating, signed: '{0}', '{1}' Tokens. Time: '{2}'"; SetReturnSecurityTokenResolver str = new Test.SetReturnSecurityTokenResolver( securityToken, key ); SecurityTokenHandlerConfiguration tokenHandlerConfiguration = new SecurityTokenHandlerConfiguration() { IssuerTokenResolver = str, SaveBootstrapContext = true, CertificateValidator = AlwaysSucceedCertificateValidator.New, AudienceRestriction = new AudienceRestriction( AudienceUriMode.Never ), IssuerNameRegistry = new SetNameIssuerNameRegistry( Issuers.GotJwt ), }; Saml2SecurityTokenHandler samlTokenHandler = new Saml2SecurityTokenHandler(); Saml2SecurityToken token = samlTokenHandler.CreateToken( tokenDescriptor ) as Saml2SecurityToken; StringBuilder sb = new StringBuilder(); XmlWriter writer = XmlWriter.Create(sb); samlTokenHandler.WriteToken( writer, token ); writer.Flush(); writer.Close(); string tokenXml = sb.ToString(); samlTokenHandler.Configuration = tokenHandlerConfiguration; started = DateTime.UtcNow; for ( int i = 0; i < iterations; i++ ) { StringReader sr = new StringReader( tokenXml ); XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader( XmlReader.Create( sr ) ); reader.MoveToContent(); SecurityToken saml2Token = samlTokenHandler.ReadToken( reader ); samlTokenHandler.ValidateToken( saml2Token ); } if ( display ) { Console.WriteLine( string.Format( validating, "Saml2SecurityTokenHandler", iterations, DateTime.UtcNow - started ) ); } JwtSecurityTokenHandler jwtTokenHandler = new JwtSecurityTokenHandler(); JwtSecurityToken jwt = jwtTokenHandler.CreateToken( tokenDescriptor ) as JwtSecurityToken; jwtTokenHandler.Configuration = tokenHandlerConfiguration; started = DateTime.UtcNow; for ( int i = 0; i < iterations; i++ ) { jwtTokenHandler.ValidateToken( jwt.RawData ); } if ( display ) { Console.WriteLine( string.Format( validating, "JwtSecurityTokenHandle - ValidateToken( jwt.RawData )", iterations, DateTime.UtcNow - started ) ); } jwt = jwtTokenHandler.CreateToken( tokenDescriptor ) as JwtSecurityToken; sb = new StringBuilder(); writer = XmlWriter.Create(sb); jwtTokenHandler.WriteToken( writer, jwt ); writer.Flush(); writer.Close(); tokenXml = sb.ToString(); started = DateTime.UtcNow; for ( int i = 0; i<iterations; i++ ) { StringReader sr = new StringReader( tokenXml ); XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader( XmlReader.Create( sr ) ); reader.MoveToContent(); SecurityToken jwtToken = jwtTokenHandler.ReadToken( reader ); jwtTokenHandler.ValidateToken( jwtToken ); } if ( display ) { Console.WriteLine( string.Format( validating, "JwtSecurityTokenHandle - ReadToken( reader ), ValidateToken( jwtToken )", iterations, DateTime.UtcNow - started ) ); } started = DateTime.UtcNow; for ( int i = 0; i < iterations; i++ ) { StringReader sr = new StringReader( tokenXml ); XmlDictionaryReader reader = XmlDictionaryReader.CreateDictionaryReader( XmlReader.Create( sr ) ); reader.MoveToContent(); JwtSecurityToken jwtToken = jwtTokenHandler.ReadToken( reader ) as JwtSecurityToken; jwtTokenHandler.ValidateToken( jwtToken.RawData ); } if ( display ) { Console.WriteLine( string.Format( validating, "JwtSecurityTokenHandle - ReadToken( reader ), ValidateToken( jwtToken.RawData )", iterations, DateTime.UtcNow - started ) ); } }