Maison >Problème commun >qu'est-ce que jwt
jwt n'est que l'abréviation, et l'orthographe complète est JSON Web Tokens. Il s'agit d'une solution d'authentification inter-domaines populaire, un jeton basé sur JSON utilisé pour déclarer certaines revendications sur le réseau.
Principe 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. requêtes uniquement Il est nécessaire d'utiliser la clé enregistrée pour vérifier l'exactitude du jeton. Il n'est pas nécessaire de sauvegarder les données de session et le serveur devient sans état et facile à développer.
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"
peut également être l'algorithme suivant :
Charge
La charge utile est le support de données, utilisé pour stocker les informations de données réelles qui doit être transmis, c'est aussi 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
JWT peut également être rechiffré.
JWT utilise
1 Le serveur crypte les informations utilisateur dans le jeton en fonction du statut de connexion de l'utilisateur et les renvoie au client
2. . Client Le client reçoit le token renvoyé par le serveur et le stocke dans le cookie
3. Chaque communication entre le client et le serveur apporte le token, qui peut être placé dans les informations d'en-tête de la requête http, telles que : dans le champ Autorisation
4. Le serveur déchiffre le jeton, vérifie le contenu et complète la logique correspondante
Fonctionnalités JWT
JWT est plus concis et plus adapté au passage dans les environnements HTML et HTTP
JWT est adapté à une vérification unique, telle que : e-mail d'activation
JWT convient à l'authentification sans état
JWT convient à la distribution de contenu CDN côté serveur
Plus de gain de temps que la requête de session de base de données
JWT n'est pas chiffré par défaut
Vous ne pouvez pas annuler le jeton ou modifier les autorisations du jeton pendant l'utilisation
JWT recommande d'utiliser le protocole HTTPS pour transmettre le code
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!