public void CreateJWE(CreateTokenTheoryData theoryData) { var context = TestUtilities.WriteHeader($"{this}.CreateJWE", theoryData); try { string jweFromJwtHandler = theoryData.JwtSecurityTokenHandler.CreateEncodedJwt(theoryData.TokenDescriptor); string jweFromJsonHandler = theoryData.JsonWebTokenHandler.CreateToken(theoryData.Payload, theoryData.TokenDescriptor.SigningCredentials, theoryData.TokenDescriptor.EncryptingCredentials); theoryData.JwtSecurityTokenHandler.ValidateToken(jweFromJwtHandler, theoryData.ValidationParameters, out SecurityToken validatedTokenFromJwtHandler); var validationResult = theoryData.JsonWebTokenHandler.ValidateToken(jweFromJsonHandler, theoryData.ValidationParameters); var validatedTokenFromJsonHandler = validationResult.SecurityToken; var validationResult2 = theoryData.JsonWebTokenHandler.ValidateToken(jweFromJwtHandler, theoryData.ValidationParameters); IdentityComparer.AreEqual((validatedTokenFromJwtHandler as JwtSecurityToken).Claims, (validatedTokenFromJsonHandler as JsonWebToken).Claims, context); theoryData.ExpectedException.ProcessNoException(context); context.PropertiesToIgnoreWhenComparing = new Dictionary <Type, List <string> > { { typeof(JsonWebToken), new List <string> { "EncodedToken", "AuthenticationTag", "Ciphertext", "InitializationVector" } }, }; IdentityComparer.AreEqual(validationResult2.SecurityToken as JsonWebToken, validationResult.SecurityToken as JsonWebToken, context); } catch (Exception ex) { theoryData.ExpectedException.ProcessException(ex, context); } TestUtilities.AssertFailIfErrors(context); }
public void RoundTripJWEKeyWrapping(CreateTokenTheoryData theoryData) { var context = TestUtilities.WriteHeader($"{this}.RoundTripJWE", theoryData); var jsonWebTokenHandler = new JsonWebTokenHandler(); var jwtSecurityTokenHandler = new JwtSecurityTokenHandler(); var jweCreatedInMemory = jsonWebTokenHandler.CreateToken(theoryData.Payload, theoryData.SigningCredentials, theoryData.EncryptingCredentials); var jweCreatedInMemoryToken = new JsonWebToken(jweCreatedInMemory); try { var tokenValidationResult = jsonWebTokenHandler.ValidateToken(jweCreatedInMemory, theoryData.ValidationParameters); var outerToken = tokenValidationResult.SecurityToken as JsonWebToken; jwtSecurityTokenHandler.ValidateToken(jweCreatedInMemory, theoryData.ValidationParameters, out SecurityToken validatedTokenFromJwtHandler); IdentityComparer.AreEqual((validatedTokenFromJwtHandler as JwtSecurityToken).Claims, outerToken.Claims, context); Assert.True(outerToken != null, "ValidateToken should not return a null token for the JWE token."); TestUtilities.CallAllPublicInstanceAndStaticPropertyGets(outerToken, theoryData.TestId); Assert.True(outerToken.InnerToken != null, "ValidateToken should not return a null token for the inner JWE token."); TestUtilities.CallAllPublicInstanceAndStaticPropertyGets(outerToken.InnerToken, theoryData.TestId); context.PropertiesToIgnoreWhenComparing = new Dictionary <Type, List <string> > { { typeof(JsonWebToken), new List <string> { "EncodedToken" } }, }; if (!IdentityComparer.AreEqual(jweCreatedInMemoryToken.Payload, outerToken.Payload, context)) { context.Diffs.Add("jweCreatedInMemory.Payload != jweValidated.Payload"); } if (!IdentityComparer.AreEqual(jweCreatedInMemoryToken.Payload, outerToken.InnerToken.Payload, context)) { context.Diffs.Add("jweCreatedInMemory.Payload != jweValidated.InnerToken.Payload"); } TestUtilities.AssertFailIfErrors(string.Format(CultureInfo.InvariantCulture, "RoundTripJWE: "), context.Diffs); } catch (Exception ex) { theoryData.ExpectedException.ProcessException(ex, context); } }
public void JWECompressionTest(CreateTokenTheoryData theoryData) { var context = TestUtilities.WriteHeader($"{this}.JWECompressionTest", theoryData); try { var handler = new JsonWebTokenHandler(); CompressionProviderFactory.Default = theoryData.CompressionProviderFactory; var jwtToken = handler.CreateToken(theoryData.Payload, theoryData.SigningCredentials, theoryData.EncryptingCredentials, theoryData.CompressionAlgorithm); var validationResult = handler.ValidateToken(jwtToken, theoryData.ValidationParameters); IdentityComparer.AreEqual(theoryData.Payload, (validationResult.SecurityToken as JsonWebToken).Payload, context); theoryData.ExpectedException.ProcessNoException(context); } catch (Exception ex) { theoryData.ExpectedException.ProcessException(ex, context); } }
public void CreateJWS(CreateTokenTheoryData theoryData) { var context = TestUtilities.WriteHeader($"{this}.CreateJWS", theoryData); try { string jwsFromJwtHandler = theoryData.JwtSecurityTokenHandler.CreateEncodedJwt(theoryData.TokenDescriptor); string jwsFromJsonHandler = theoryData.JsonWebTokenHandler.CreateToken(theoryData.Payload, KeyingMaterial.JsonWebKeyRsa256SigningCredentials); theoryData.JwtSecurityTokenHandler.ValidateToken(jwsFromJwtHandler, theoryData.ValidationParameters, out SecurityToken validatedToken); theoryData.JsonWebTokenHandler.ValidateToken(jwsFromJsonHandler, theoryData.ValidationParameters); theoryData.ExpectedException.ProcessNoException(context); var jwsTokenFromJwtHandler = new JsonWebToken(jwsFromJwtHandler); var jwsTokenFromHandler = new JsonWebToken(jwsFromJsonHandler); IdentityComparer.AreEqual(jwsTokenFromJwtHandler, jwsTokenFromHandler, context); } catch (Exception ex) { theoryData.ExpectedException.ProcessException(ex, context); } TestUtilities.AssertFailIfErrors(context); }