Maison >Problème commun >qu'est-ce que jwt

qu'est-ce que jwt

coldplay.xixi
coldplay.xixioriginal
2020-10-30 10:56:129959parcourir

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.

qu'est-ce que jwt

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 :

quest-ce que jwt

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!

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