Maison  >  Article  >  développement back-end  >  Comment utiliser JWT pour l'authentification API en PHP

Comment utiliser JWT pour l'authentification API en PHP

PHPz
PHPzoriginal
2023-06-17 22:04:281179parcourir

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.

  • En-tête : contient l'algorithme utilisé par JWT, tel que HMAC SHA256 ou RSA.
  • Payload : contient des données sur les utilisateurs, les autorisations ou d'autres informations connexes.
  • Signature : utilisée pour vérifier l'authenticité et l'intégrité du Token.

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 :

  1. Installez la bibliothèque Firebase JWT :

composer require firebase/php-jwt

  1. Créez un 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');
  1. Vérifier JWT :

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;
  1. Envoyer JWT au client :

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, '/');
  1. Vérifiez le JWT envoyé par le client :

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!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn