Maison  >  Article  >  développement back-end  >  Comment utiliser les jetons Web JSON pour l'authentification API en PHP

Comment utiliser les jetons Web JSON pour l'authentification API en PHP

PHPz
PHPzoriginal
2023-06-17 19:04:381346parcourir

Les jetons Web JSON (JWT) sont une méthode sécurisée de transfert d'informations dans des applications Web. Il s'agit d'une norme ouverte (RFC 7519) qui définit un moyen compact, autonome et sécurisé de communiquer en toute sécurité entre les parties en tant qu'objets JSON. L'utilisation de JWT est particulièrement importante lors de l'utilisation d'API pour l'authentification. En PHP, nous pouvons implémenter l'authentification JWT en quelques étapes simples.

  1. Installer la bibliothèque JWT

Tout d'abord, nous devons installer la bibliothèque JWT via Composer. Ajoutez le code suivant dans votre fichier composer.json :

{
    "require": {
        "firebase/php-jwt": "3.0.*"
    }
}

Alternativement, installez dans le terminal à l'aide de la commande suivante :

composer require firebase/php-jwt
  1. Create JWT

Avant l'authentification API, nous devons créer un JWT. En PHP, nous pouvons créer un JWT avec le code suivant :

use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);

Dans cet exemple, nous créons une clé nommée $key et utilisons le tableau $payload comme charge utile du JWT. La charge utile contient des informations de base telles que "iss" (émetteur), "aud" (destinataire), "iat" (heure d'émission) et "nbf" (heure de validité), qui seront utilisées dans l'authentification API.

  1. Verify JWT

Le processus de validation d'un JWT est à l'opposé du processus de création de celui-ci. Nous devons utiliser la clé secrète et le JWT d'origine pour décoder le JWT et vérifier les informations qu'il contient. En PHP, nous pouvons utiliser le code suivant pour valider le JWT :

use FirebaseJWTJWT;

$key = "example_key";
$jwt = $_POST["jwt"];

try {
    $decoded = JWT::decode($jwt, $key, array('HS256'));
    return $decoded;

} catch (Exception $e) {
    return false;
}

Ici, nous utilisons $_POST["jwt"] pour soumettre le JWT brut au serveur. Nous transmettons ensuite la clé et les règles de chiffrement en tant que paramètres à la méthode JWT::decode(). Si la vérification réussit, cette méthode renverra les données de charge utile JWT.

  1. Envoyer JWT au client

En PHP, nous pouvons envoyer JWT au client et laisser le client envoyer JWT comme identifiant d'authentification dans chaque demande. Dans l'exemple suivant, nous stockons le JWT dans $_SESSION et le renvoyons au client :

use FirebaseJWTJWT;

$key = "example_key";
$payload = array(
    "iss" => "http://example.org",
    "aud" => "http://example.com",
    "iat" => 1356999524,
    "nbf" => 1357000000
);

$jwt = JWT::encode($payload, $key);

$_SESSION["jwt"] = $jwt;

header('Content-Type: application/json');
echo json_encode(array("jwt" => $jwt));

Ici, nous stockons le JWT en utilisant $_SESSION["jwt"] et le renvoyons au client en tant qu'objet JSON. Le client peut stocker le JWT localement et l'envoyer à l'API pour authentification.

Résumé

Le processus d'utilisation de JWT pour l'authentification API en PHP est très simple, suivez simplement les étapes ci-dessus. L'utilisation de JWT pour l'authentification améliore non seulement la sécurité, mais améliore également les performances de votre application, car elle élimine le besoin d'authentification à chaque demande. Cependant, veuillez noter que si la clé est perdue ou volée par un pirate informatique, cela peut avoir des effets fatals sur l'application, alors assurez-vous de conserver la clé dans un endroit sûr.

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