- Added payload expiration time validation

This commit is contained in:
Dave Mc Nicoll 2024-12-09 21:58:42 +00:00
parent d3bb2c248a
commit 23079e6040
2 changed files with 12 additions and 0 deletions

View File

@ -29,6 +29,9 @@ class JsonWebTokenDecoder
JsonWebTokenValidate::validateHeaderType($jsonArray); JsonWebTokenValidate::validateHeaderType($jsonArray);
JsonWebTokenValidate::validateHeaderAlgorithm($jsonArray); JsonWebTokenValidate::validateHeaderAlgorithm($jsonArray);
} }
elseif ($key === 'payload') {
JsonWebTokenValidate::validatePayloadExpiration($jsonArray);
}
$this->$key = $jsonArray; $this->$key = $jsonArray;
} }

View File

@ -26,6 +26,15 @@ abstract class JsonWebTokenValidate
} }
} }
public static function validatePayloadExpiration(array $payload) : void
{
if ( array_key_exists('exp', $payload) && ( $payload['exp'] < time() ) ) {
throw new JsonWebTokenDecodingError(
sprintf("Given token is expired (%s)", ( new \DateTime())->setTimestamp($payload['exp'])->format(\DateTime::ISO8601) )
);
}
}
public static function validateSignature(string $alg, string $secret, string $encodedHeader, string $encodedPayload, string $encodedSignature) : void public static function validateSignature(string $alg, string $secret, string $encodedHeader, string $encodedPayload, string $encodedSignature) : void
{ {
$algorithm = JsonWebTokenAlgorithmEnum::fromString($alg); $algorithm = JsonWebTokenAlgorithmEnum::fromString($alg);