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.
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!