Que fait JWT ?

Guanhui
Libérer: 2023-03-01 17:34:01
original
4508 Les gens l'ont consulté

JWT est actuellement une solution d'authentification inter-domaines populaire. Son principe est de crypter les informations de l'utilisateur pour générer un Token. Chaque fois qu'une requête est adressée au serveur, il lui suffit d'utiliser la clé enregistrée pour vérifier la clé. l'exactitude du jeton et il n'est pas nécessaire de le sauvegarder à nouveau. Toutes les données de session rendent le serveur apatride.

Que fait JWT ?

la méthode de vérification jwt consiste à crypter les informations de l'utilisateur pour générer un jeton. Chaque fois que le serveur demande une requête, il lui suffit d'utiliser la clé enregistrée pour vérifier la. l'exactitude du jeton. Il n'est pas nécessaire de sauvegarder les données de la session et le serveur devient apatride, ce qui facilite son expansion.

Informations utilisateur avant chiffrement, telles que :

{
    "username": "vist",
    "role": "admin",
    "expire": "2018-12-08 20:20:20"
}
Copier après la connexion

Jeton reçu par le client :

7cd357af816b907f2cc9acbe9c3b4625
Copier après la connexion

Structure JWT

A Le le jeton est divisé en 3 parties :

  • En-tête

  • Charge utile

  • Signature (signature)

Les trois parties sont séparées par ".", tel que :

eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
Copier après la connexion

Header

JWT La partie en-tête est un Objet JSON décrivant les métadonnées, généralement :

{
  "typ": "JWT",
  "alg": "HS256"
}
Copier après la connexion

typ est le type de déclaration, précisez "JWT" ​​​​

alg est l'algorithme de chiffrement, la valeur par défaut est "HS256"

Load

Load (payload) est le support de données, utilisé pour stocker les informations de données réelles qui doivent être transmises, et est également un objet JSON.

Champs officiels recommandés par JWT :

  • iss : jwt issuer

  • sub : jwt pour les utilisateurs

  • aud : la partie recevant le jwt

  • exp : le délai d'expiration du jwt, ce délai d'expiration doit être supérieur au délai d'émission

  • nbf : Définir l'heure avant laquelle le jwt est indisponible.

  • iat : L'heure d'émission du jwt

  • jti : L'identité unique de jwt, principalement utilisée comme jeton unique pour éviter les attaques par relecture.

Vous pouvez également utiliser des champs personnalisés, tels que :

{
    "username": "vist",
    "role": "admin"
}
Copier après la connexion

Signature

La partie signature est une comparaison du deux premières parties (partie d'en-tête, charge utile) pour empêcher la falsification des données.

Suivez les étapes suivantes pour générer :

1. Spécifiez d'abord le secret

2 Convertissez les informations d'en-tête et de charge utile en base64 respectivement

3. Chiffrer à l'aide de l'algorithme spécifié dans l'en-tête

Enfin, signature = HMACSHA256(base64UrlEncode(header) + "." + base64UrlEncode(payload),secret)

La signature obtenue par le client :

header.payload.signature
Copier après la connexion

Le JWT peut également être rechiffré.

Tutoriel recommandé : "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!

Étiquettes associées:
jwt
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal