Skip to content

Commit 48e5db7

Browse files
authored
fix(jwt): Mark date/time in JWTs as integers (#118)
* fix(jwt): Mark date/time in JWTs as integers * Fix type
1 parent 6445528 commit 48e5db7

File tree

2 files changed

+10
-3
lines changed

2 files changed

+10
-3
lines changed

src/Gr4vy.Tests/AuthTest.cs

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -69,11 +69,15 @@ public void GetToken_ShouldCreateValidSignedJwtToken()
6969
var headers = jwtToken.Header;
7070

7171
Assert.That(headers["kid"], Is.EqualTo(Thumbprint));
72+
7273
Assert.That(scopes.Count(s => s.Value == "*.read"), Is.EqualTo(1));
7374
Assert.That(scopes.Count(s => s.Value == "*.write"), Is.EqualTo(1));
7475
Assert.NotNull(jwtToken.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Iat));
76+
Assert.That(jwtToken.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Iat)?.ValueType, Is.EqualTo(ClaimValueTypes.Integer64));
7577
Assert.NotNull(jwtToken.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Nbf));
78+
Assert.That(jwtToken.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Nbf)?.ValueType, Is.EqualTo(ClaimValueTypes.Integer64));
7679
Assert.NotNull(jwtToken.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Exp));
80+
Assert.That(jwtToken.Claims.FirstOrDefault(c => c.Type == JwtRegisteredClaimNames.Exp)?.ValueType, Is.EqualTo(ClaimValueTypes.Integer64));
7781
Assert.That(
7882
jwtToken.Claims.First(c => c.Type == JwtRegisteredClaimNames.Iss).Value,
7983
Does.StartWith("speakeasy-sdk/csharp")

src/Gr4vy/Auth.cs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -134,15 +134,18 @@ public static string GetToken(
134134
new Claim("iss", issuer),
135135
new Claim(
136136
JwtRegisteredClaimNames.Iat,
137-
new DateTimeOffset(now).ToUnixTimeSeconds().ToString()
137+
new DateTimeOffset(now).ToUnixTimeSeconds().ToString(),
138+
ClaimValueTypes.Integer64
138139
),
139140
new Claim(
140141
JwtRegisteredClaimNames.Nbf,
141-
new DateTimeOffset(now).ToUnixTimeSeconds().ToString()
142+
new DateTimeOffset(now).ToUnixTimeSeconds().ToString(),
143+
ClaimValueTypes.Integer64
142144
),
143145
new Claim(
144146
JwtRegisteredClaimNames.Exp,
145-
new DateTimeOffset(now.AddSeconds(expiresIn)).ToUnixTimeSeconds().ToString()
147+
new DateTimeOffset(now.AddSeconds(expiresIn)).ToUnixTimeSeconds().ToString(),
148+
ClaimValueTypes.Integer64
146149
),
147150
new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
148151
};

0 commit comments

Comments
 (0)