À mesure que les applications Web modernes continuent d'évoluer, l'authentification et la sécurité deviennent de plus en plus importantes. L'une des méthodes les plus populaires consiste à utiliser des jetons JWT (JSON Web Tokens) pour l'authentification. Cet article vous présentera les bases et les techniques d'implémentation des jetons JWT à l'aide de PHP.
JWT est un standard ouvert qui définit un moyen de transmettre de manière sécurisée et efficace des réclamations en transmettant des objets JSON sur le réseau. JWT se compose de trois parties : en-tête, charge utile et signature. L'en-tête contient le type de jeton et l'algorithme de hachage utilisé, la charge utile contient des informations d'authentification et d'autorisation, et la signature est une chaîne combinant les hachages et la clé de l'en-tête et de la charge utile.
JWT prend en charge l'authentification sans état côté serveur, évitant ainsi le besoin d'utiliser des sessions de serveur ou des cookies. Et il est facile à étendre car il s'agit d'un format JSON standardisé.
Le langage PHP fournit de nombreuses classes pour générer et vérifier facilement les balises JWT. Créer JWT en PHP nécessite l'utilisation d'une librairie, nous utilisons ici la librairie php-jwt, disponible gratuitement sur GitHub.
Installez la bibliothèque php-jwt :
composer require firebase/php-jwt
Créer un token JWT est simple, voici l'exemple de code :
require_once('vendor/autoload.php'); use FirebaseJWTJWT; $key = "example_key"; $payload = array( "iss" => "http://example.org", "aud" => "http://example.com", "iat" => 1356999524, "nbf" => 1357000000 ); $jwt = JWT::encode($payload, $key); print_r($jwt);
Dans cet exemple, nous avons utilisé une clé example_key
和一些线索,比如该令牌的签发人iss
,以及可以使用该令牌的接收者aud
。我们还定义了JWT的生命周期,即在令牌签发时间iat
之后和比当前时间点nbf
qui aurait dû fonctionner auparavant.
Le résultat final du JWT est une longue chaîne sous la forme de AAA.BBB.CCC. AAA est l'en-tête, BBB est la charge utile et CCC est la signature générée par la clé.
La vérification du jeton JWT nécessite la même clé, un exemple de code est le suivant :
require_once('vendor/autoload.php'); use FirebaseJWTJWT; $key = "example_key"; $jwt = "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOi8vZXhhbXBsZS5vcmciLCJhdWQiOiJodHRwOi8vZXhhbXBsZS5jb20iLCJpYXQiOjEzNTY5OTk1MjQsIm5iZiI6MTM1NzAwMDAwMCwiZXhwIjoxMzU3MDAwMDAwfQ.kn4N5lvvvdQhL7rEixJOaYWKQZ3GzrCc8REIzc2Kw8c"; $decoded = JWT::decode($jwt, $key, array('HS256')); print_r($decoded);
Si le jeton peut être décodé avec succès, votre code générera le même tableau associatif que dans la charge utile. Si l'authentification échoue, une exception sera levée.
Cet article explique comment implémenter les jetons JWT à l'aide de PHP. JWT est un outil simple et utile qui peut rendre votre application plus sécurisée et éviter d'utiliser les mécanismes de session traditionnels. Nous espérons que cet article vous a aidé à mieux comprendre JWT et comment l'utiliser dans les applications PHP.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!