PHP : valider les jetons Web JSON (JWT) avec Auth0-PHP
La trousse SDK Auth0 pour PHP fournit une classe Auth0\SDK\Token
, utilisée pour le traitement des jetons Web JSON. Elle vous permet de décoder, de valider et de vérifier les jetons que votre application peut utiliser. Pour en savoir plus sur les jetons Web JSON et savoir comment les créer et les décoder, consultez jwt.io.
La classe peut traiter des jetons HS256 et RS256 Tous deux requièrent un algorithme et des publics valides pour pouvoir être configurés avec la trousse SDK avant tout traitement. Le secret client est nécessaire pour configurer les jetons HS256. Ces derniers ont aussi besoin d’un émetteur autorisé, lequel est utilisé pour récupérer le fichier des clés Web JSON lors du processus de décodage. (Plus d’informations sur les algorithmes de signature ici.)
Prérequis
La documentation ci-dessous part du principe que vous avez suivi les étapes du guide de démarrage de PHP, et que vous avez utilisé le code fourni.
Exemple d’utilisation
Voici l’exemple d’un petit processus de traitement des jetons Web JSON basé sur URL et la classe Token
de la trousse SDK.
<?php
// Import the Composer Autoloader to make the SDK classes accessible:
require 'vendor/autoload.php';
// Load our environment variables from the .env file:
(Dotenv\Dotenv::createImmutable(__DIR__))->load();
$token = filter_var($_GET['token'] ?? null, FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE);
$algorithm = filter_var($_GET['algorithm'] ?? 'HS256', FILTER_UNSAFE_RAW, FILTER_NULL_ON_FAILURE);
if ($token === null) {
die('No `token` request parameter.');
}
if (! in_array($algorithm, ['HS256', 'RS256'])) {
die('Invalid `algorithm` supplied.');
}
// The Auth0 SDK includes a helpful token processing utility we'll leverage for this:
$token = new \Auth0\SDK\Token([
'domain' => $env['AUTH0_DOMAIN'],
'clientId' => $env['AUTH0_CLIENT_ID'],
'clientSecret' => $env['AUTH0_CLIENT_SECRET'],
'tokenAlgorithm' => $algorithm
], $token, \Auth0\SDK\Token::TYPE_ID_TOKEN);
// Verify the token: (This will throw an \Auth0\SDK\Exception\InvalidTokenException if verification fails.)
$token->verify();
// Validate the token claims: (This will throw an \Auth0\SDK\Exception\InvalidTokenException if validation fails.)
$token->validate();
echo '<pre>';
print_r($token->toArray(), true);
echo '</pre>';
Was this helpful?
verify()
et validate()
offrent tous deux un certain nombre d’options pour personnaliser le comportement des jetons, y compris la validation des demandes de nombres aléatoires, la restriction du temps maximum à partir de l’auth_time
d’un jeton, la marge
de tolérance de l’horloge pour les vérifications de temps, et plus encore. Ces méthodes sont commentées en détail pour permettre l’examen de ces options soit au moyen du code source, soit au moyen de l’environnement de développement intégré de votre choix.