@@ -59,15 +59,27 @@ await GenerateTokenAsync(Configure, async (context) =>
59
59
securityToken . Header . ShouldContainKeyAndValue ( "kid" , "my-key-id" ) ;
60
60
securityToken . Header . ShouldContainKeyAndValue ( "typ" , "JWT" ) ;
61
61
62
+ // See https://github.com/aspnet-contrib/AspNet.Security.OAuth.Providers/issues/684
63
+ securityToken . Header . Keys . OrderBy ( ( p ) => p ) . ShouldBe (
64
+ new string [ ] { "alg" , "kid" , "typ" } ,
65
+ Case . Sensitive ,
66
+ "JWT header contains unexpected additional claims." ) ;
67
+
62
68
securityToken . Payload . ShouldNotBeNull ( ) ;
63
69
securityToken . Payload . ShouldContainKey ( "exp" ) ;
64
70
securityToken . Payload . ShouldContainKey ( "iat" ) ;
71
+ securityToken . Payload . ShouldContainKey ( "nbf" ) ;
65
72
securityToken . Payload . ShouldContainKeyAndValue ( "aud" , "https://appleid.apple.com" ) ;
66
73
securityToken . Payload . ShouldContainKeyAndValue ( "iss" , "my-team-id" ) ;
67
74
securityToken . Payload . ShouldContainKeyAndValue ( "sub" , "my-client-id" ) ;
68
75
securityToken . Payload . Iat . HasValue . ShouldBeTrue ( ) ;
69
76
securityToken . Payload . Exp . HasValue . ShouldBeTrue ( ) ;
70
77
78
+ securityToken . Payload . Keys . OrderBy ( ( p ) => p ) . ShouldBe (
79
+ new string [ ] { "aud" , "exp" , "iat" , "iss" , "nbf" , "sub" } ,
80
+ Case . Sensitive ,
81
+ "JWT payload contains unexpected additional claims." ) ;
82
+
71
83
( ( long ) securityToken . Payload . Iat ! . Value ) . ShouldBeGreaterThanOrEqualTo ( utcNow . ToUnixTimeSeconds ( ) ) ;
72
84
( ( long ) securityToken . Payload . Exp ! . Value ) . ShouldBeGreaterThanOrEqualTo ( utcNow . AddSeconds ( 60 ) . ToUnixTimeSeconds ( ) ) ;
73
85
( ( long ) securityToken . Payload . Exp . Value ) . ShouldBeLessThanOrEqualTo ( utcNow . AddSeconds ( 70 ) . ToUnixTimeSeconds ( ) ) ;
0 commit comments