Maison  >  Article  >  développement back-end  >  Que fait JWT ?

Que fait JWT ?

Guanhui
Guanhuioriginal
2020-06-28 16:23:494479parcourir

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"
}

Jeton reçu par le client :

7cd357af816b907f2cc9acbe9c3b4625

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

Header

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

{
  "typ": "JWT",
  "alg": "HS256"
}

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"
}

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

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!

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