@@ -59,15 +59,27 @@ await GenerateTokenAsync(Configure, async (context) =>
5959 securityToken . Header . ShouldContainKeyAndValue ( "kid" , "my-key-id" ) ;
6060 securityToken . Header . ShouldContainKeyAndValue ( "typ" , "JWT" ) ;
6161
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+
6268 securityToken . Payload . ShouldNotBeNull ( ) ;
6369 securityToken . Payload . ShouldContainKey ( "exp" ) ;
6470 securityToken . Payload . ShouldContainKey ( "iat" ) ;
71+ securityToken . Payload . ShouldContainKey ( "nbf" ) ;
6572 securityToken . Payload . ShouldContainKeyAndValue ( "aud" , "https://appleid.apple.com" ) ;
6673 securityToken . Payload . ShouldContainKeyAndValue ( "iss" , "my-team-id" ) ;
6774 securityToken . Payload . ShouldContainKeyAndValue ( "sub" , "my-client-id" ) ;
6875 securityToken . Payload . Iat . HasValue . ShouldBeTrue ( ) ;
6976 securityToken . Payload . Exp . HasValue . ShouldBeTrue ( ) ;
7077
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+
7183 ( ( long ) securityToken . Payload . Iat ! . Value ) . ShouldBeGreaterThanOrEqualTo ( utcNow . ToUnixTimeSeconds ( ) ) ;
7284 ( ( long ) securityToken . Payload . Exp ! . Value ) . ShouldBeGreaterThanOrEqualTo ( utcNow . AddSeconds ( 60 ) . ToUnixTimeSeconds ( ) ) ;
7385 ( ( long ) securityToken . Payload . Exp . Value ) . ShouldBeLessThanOrEqualTo ( utcNow . AddSeconds ( 70 ) . ToUnixTimeSeconds ( ) ) ;
0 commit comments