Maison  >  Article  >  développement back-end  >  Une brève introduction à JWT en python

Une brève introduction à JWT en python

不言
不言avant
2018-12-13 10:48:383047parcourir

Cet article vous apporte une brève introduction à JWT en python. Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.

Le jeton Web Json (JWT) est un standard ouvert basé sur JSON (RFC 7519) mis en œuvre pour transmettre des revendications entre des environnements d'applications Web. Le jeton est conçu pour être compact et sécurisé, particulièrement adapté aux applications Web uniques. Les scénarios de connexion (SSO) des sites distribués sont généralement utilisés pour transmettre des informations d'identité d'utilisateur authentifiées entre les fournisseurs d'identité et les fournisseurs de services afin d'obtenir des ressources à partir des serveurs de ressources. En ajoutant des informations de déclaration supplémentaires nécessaires à une autre logique métier, le jeton peut également. être utilisé directement pour l'authentification, ou il peut être crypté

Problèmes basés sur l'authentification de session
Session : Chaque utilisateur passe une fois authentifié notre application, notre application doit faire un enregistrement sur le serveur pour faciliter l'identification. de la prochaine requête de l'utilisateur. De manière générale, la session est stockée en mémoire. À mesure que le nombre d'utilisateurs authentifiés augmente, la surcharge du serveur augmentera considérablement

Évolutivité : après l'authentification de l'utilisateur, le serveur effectue. enregistrements d'authentification. Si les enregistrements d'authentification sont stockés en mémoire, cela signifie que l'utilisateur doit demander la prochaine requête sur ce serveur, ce n'est qu'ainsi que les ressources autorisées peuvent être obtenues, ce qui limite par conséquent la capacité de l'équilibreur de charge dans les applications distribuées. Cela signifie également limiter les capacités d'extension de l'application.

CSRF : Parce qu'il est basé sur des cookies, si le cookie est intercepté, l'utilisateur sera vulnérable aux attaques de falsification de requêtes intersites

La composition de JWT

La première partie est appelée l'en-tête, et la deuxième partie est appelée l'en-tête. Une partie est appelée charge utile (similaire aux objets transportés dans un avion), et la troisième partie est appelée. signature

en-tête

L'en-tête de jwt contient deux parties d'informations :

Déclarez le type, voici jwt

Déclarez l'algorithme de chiffrement, utilisez généralement HMAC SHA256 directement
L'en-tête complet ressemble au JSON suivant :

{
  'typ': 'JWT',
  'alg': 'HS256'
}
Ensuite, l'en-tête est crypté en base64 (le cryptage peut être déchiffré symétriquement), ce qui constitue la première partie


eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.

charge utile
La charge utile est l'endroit où les informations valides sont stockées. Ce nom semble faire spécifiquement référence à ce qui est transporté à bord des marchandises, ces informations valides contiennent trois parties

Déclarations enregistrées dans la norme<.>Déclarations publiques

Déclarations privées
Déclarations enregistrées dans le standard (recommandées mais non obligatoires) :

iss : jwt issuer

sub : l'utilisateur pour lequel jwt est ciblé

aud : la partie qui reçoit le jwt
exp : l'heure d'expiration du jwt, cette heure d'expiration doit être supérieure à l'heure d'émission
nbf : Définir l'heure avant laquelle le jwt est indisponible
iat : l'heure d'émission de. le jwt
jti : l'identité unique du jwt, principalement utilisée comme jeton unique pour éviter les attaques par rejeu.
signature
La troisième partie de JWT est une information de visa. Ces informations de visa se composent de trois parties :

en-tête (après base64)

charge utile (après base64)

secret Cette partie nécessite l'utilisation d'un en-tête chiffré en base64 et d'une charge utile chiffrée en base64. La chaîne composée de concaténation est ensuite chiffrée en ajoutant du sel et du secret via la méthode de chiffrement déclarée dans l'en-tête, et constitue ensuite la troisième partie de jwt.
Concaténez ces trois parties en une chaîne complète en utilisant . pour former le jwt final
Le secret est enregistré côté serveur, et l'émission et la génération du jwt se font également côté serveur. émission et émission de la vérification jwt. Il s'agit donc de la clé privée de votre serveur et ne doit être exposée dans aucun scénario. Une fois que le client prend connaissance de ce secret, cela signifie qu'il peut auto-signer jwt.

Avantages
En raison de la polyvalence de json, JWT peut être pris en charge dans plusieurs langages, tels que JAVA, JavaScript, NodeJS, PHP et de nombreux autres langages.

En raison de la partie charge utile, JWT peut stocker certaines informations non sensibles nécessaires à d'autres logiques métier en soi.

Facile à transmettre. La structure de jwt est très simple et l'occupation en octets est très petite, il est donc très facile à transmettre.
Il n'est pas nécessaire de sauvegarder les informations de session côté serveur, il est donc facile d'appliquer des extensions
Liées à la sécurité
Les informations sensibles ne doivent pas être stockées dans la partie charge utile de jwt, car cette partie est la partie qui peut être déchiffré par le client.
Protégez la clé privée secrète, ce qui est très important.
Si possible, veuillez utiliser le protocole https


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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer