Skip to content

Commit 7cf4fe6

Browse files
committed
Only check if iat exists and is an interger
1 parent 56cfc75 commit 7cf4fe6

File tree

2 files changed

+22
-1
lines changed

2 files changed

+22
-1
lines changed

src/OpenIDConnectClient.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1214,7 +1214,7 @@ protected function verifyJWTClaims($claims, ?string $accessToken = null): bool
12141214
&& (!isset($claims->nonce) || $claims->nonce === $this->getNonce())
12151215
&& ( !isset($claims->exp) || ((is_int($claims->exp)) && ($claims->exp >= time() - $this->leeway)))
12161216
&& ( !isset($claims->nbf) || ((is_int($claims->nbf)) && ($claims->nbf <= time() + $this->leeway)))
1217-
&& ( isset($claims->iat) && ((is_int($claims->iat)) && ($claims->iat <= time() + $this->leeway)))
1217+
&& ( isset($claims->iat) && is_int($claims->iat))
12181218
&& ( !isset($claims->at_hash) || !isset($accessToken) || $claims->at_hash === $expected_at_hash )
12191219
);
12201220
}

tests/OpenIDConnectClientTest.php

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ public function getIdTokenPayload()
3030
'aud' => 'client-id',
3131
'iss' => 'issuer',
3232
'sub' => 'sub',
33+
'iat' => time(),
3334
]);
3435
self::assertTrue($valid);
3536

@@ -38,6 +39,7 @@ public function getIdTokenPayload()
3839
'aud' => ['client-id'],
3940
'iss' => 'issuer',
4041
'sub' => 'sub',
42+
'iat' => time(),
4143
]);
4244
self::assertTrue($valid);
4345

@@ -46,6 +48,24 @@ public function getIdTokenPayload()
4648
'aud' => ['ipsum'],
4749
'iss' => 'issuer',
4850
'sub' => 'sub',
51+
'iat' => time(),
52+
]);
53+
self::assertFalse($valid);
54+
55+
# iat missing
56+
$valid = $client->testVerifyJWTClaims((object)[
57+
'aud' => ['client-id'],
58+
'iss' => 'issuer',
59+
'sub' => 'sub',
60+
]);
61+
self::assertFalse($valid);
62+
63+
# iat invalid
64+
$valid = $client->testVerifyJWTClaims((object)[
65+
'aud' => ['client-id'],
66+
'iss' => 'issuer',
67+
'sub' => 'sub',
68+
'iat' => 'invalid'
4969
]);
5070
self::assertFalse($valid);
5171

@@ -127,6 +147,7 @@ public function testAuthenticateDoesNotThrowExceptionIfClaimsIsMissingNonce()
127147
$fakeClaims->iss = 'fake-issuer';
128148
$fakeClaims->aud = 'fake-client-id';
129149
$fakeClaims->sub = 'fake-sub';
150+
$fakeClaims->iat = time();
130151
$fakeClaims->nonce = null;
131152

132153
$_REQUEST['id_token'] = 'abc.123.xyz';

0 commit comments

Comments
 (0)