Avec le développement des applications Web, l'authentification API est devenue une partie intégrante des applications Web modernes. JSON Web Token (JWT) est une norme ouverte d'authentification et d'autorisation qui fournit un moyen sécurisé et fiable d'authentifier les utilisateurs et de mettre en œuvre l'authentification unique. Cet article explique comment utiliser JWT pour l'authentification API en PHP.
Qu'est-ce que JWT ?
JSON Web Token (JWT) est un standard basé sur le format JSON, qui peut être utilisé pour transmettre en toute sécurité des informations sur Internet. JWT se compose généralement de trois parties : en-tête, charge utile et signature.
Flux de travail JWT
Lorsqu'un utilisateur se connecte, le serveur attribuera un JWT à l'utilisateur. Ce JWT sera envoyé au client et enregistré dans le cookie ou le stockage local du client. Lorsqu'un utilisateur souhaite accéder à une API protégée, le client renvoie un JWT au serveur. Le serveur vérifiera la signature du JWT et vérifiera les données de la charge utile pour s'assurer que l'utilisateur a l'autorisation d'accéder à l'API. Si le JWT réussit la validation, le serveur autorise l'utilisateur à accéder à l'API.
Implémentation de l'authentification JWT à l'aide de PHP
En PHP, nous pouvons utiliser certaines bibliothèques open source populaires pour implémenter l'authentification JWT. Cet article utilisera la bibliothèque JWT de Firebase, qui fournit une API simple pour créer et vérifier des JWT. Voici un exemple simple :
composer require firebase/php-jwt
Le code suivant créera un JWT qui contient une signature et une charge utile personnalisée. données.
use FirebaseJWTJWT; // Set the payload data (custom data) $payload = [ "user_id" => 1, "username" => "john.doe", ]; // Generate JWT using secret key $jwt = JWT::encode($payload, 'secret_key');
Le code ci-dessous vérifiera la signature du JWT et vérifiera si les données de charge utile sont valides.
use FirebaseJWTJWT; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
Après avoir créé le JWT, nous pouvons l'envoyer au client et le stocker dans un cookie ou un stockage local.
// Set JWT as a cookie setcookie('token', $jwt, time()+3600, '/');
Nous pouvons utiliser un code similaire à celui du serveur pour vérifier le JWT envoyé par le client.
use FirebaseJWTJWT; // Get JWT from cookie or local storage $jwt = $_COOKIE['token']; // Verify JWT using secret key try { $decoded = JWT::decode($jwt, 'secret_key', array('HS256')); } catch (Exception $e) { // Handle invalid JWT } // Access the payload data $user_id = $decoded->user_id; $username = $decoded->username;
Résumé
JWT est un mécanisme d'authentification sécurisé et fiable pour les applications Web modernes. L'authentification JWT peut être facilement implémentée à l'aide de PHP et de la bibliothèque Firebase JWT. Lors de la mise en œuvre de l'authentification API, assurez-vous de stocker uniquement les JWT dans un endroit sécurisé et d'utiliser HTTPS pour la transmission protégée.
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!