Skip to content

Commit cbbc7a1

Browse files
Assert on claims in Apple JWT
See #684.
1 parent 127c590 commit cbbc7a1

File tree

1 file changed

+12
-0
lines changed

1 file changed

+12
-0
lines changed

test/AspNet.Security.OAuth.Providers.Tests/Apple/AppleClientSecretGeneratorTests.cs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)