


Introduction aux principes JWT et aux applications simples (avec code)
Mar 29, 2019 am 10:53 AMCet article vous apporte une introduction aux principes de JWT et aux applications simples (avec code). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer. J'espère qu'il vous sera utile.
Connexion par authentification JWT
Récemment, je travaille sur un système d'audit, l'authentification de connexion JWT est utilisée pour la connexion en arrière-plan
Qu'est-ce que JWT
<.>Le jeton Web Json (JWT), selon la définition du site officiel, est un standard ouvert basé sur JSON mis en œuvre pour transférer les revendications entre les environnements d'applications réseau. Le jeton est conçu pour être compact et sécurisé, particulièrement adapté aux sites distribués. Signature unique. sur scénario. Les revendications JWT sont généralement utilisées pour transférer des informations d'identité d'utilisateur authentifiées entre les fournisseurs d'identité et les fournisseurs de services afin d'obtenir des ressources du serveur de ressources. Certaines informations de revendication supplémentaires nécessaires à d'autres logiques métier peuvent également être ajoutées. pour authentification ou crypté. Pourquoi utiliser JWTCeci est principalement comparé à la session traditionnelle. La session traditionnelle doit enregistrer certaines informations de connexion côté serveur, généralement en mémoire, et le serveur back-end est un. cluster, etc. Dans une situation distribuée, les autres hôtes ne sauvegardent pas ces informations, ils doivent donc tous être vérifiés via un hôte fixe. Si le nombre d'utilisateurs est important, il est facile de former un goulot d'étranglement au point d'authentification, ce qui crée un goulot d'étranglement. l'application est difficile à développer. Principe JWTJWT se compose de trois parties, séparées par des points. Il ressemble à ceci. Le jeton JWT lui-même n'a pas d'espaces, de sauts de ligne, etc. Ce qui suit est traité pour des raisons d'esthétique 1. En-têteeyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9. eyJpc3MiOiJsYWJzX3B1cmlmaWVyLWFwaS1wYW5lbCIsImlhdCI6MTU1Mjk3NTg3OCwiZXhwIjoxNTU1NTY3ODc4LCJhdWQiOiJodHRwOi8vZmYtbGFic19wdXJpZmllci1hcGktdGVzdC5mZW5kYS5pby9wcm9kL3YxL2F1dGgvand0Iiwic3ViIjoiMTUwMTM4NTYxMTg4NDcwNCIsInNjb3BlcyI6WyJyZWdpc3RlciIsIm9wZW4iLCJsb2dpbiIsInBhbmVsIl19. m0HD1SUd30TWKuDQImwjIl9a-oWJreG7tKVzuGVh7e4
La partie En-tête est un json qui décrit les métadonnées de JWT, généralement comme suit
alg indique la signature utilisée Algorithme, la valeur par défaut est HMAC SHA256, écrit HS256, tye représente le type de ce jeton, le jeton JWT utilise JWT uniformément, le jeton généré par l'en-tête ci-dessus est{ "alg": "HS256", "typ": "JWT" }
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
- aud : Le destinataire du JWTtoken peut renseigner l'URL de l'interface qui génère ce jeton, mais ce n'est pas obligatoire
- exp : Heure d'expiration, horodatage, entier, paramètres facultatifs
- iat : heure à laquelle le token a été généré, heure unix, horodatage, paramètres facultatifs
- nbf (Not Before) : indique que le token est ici Non disponible avant l'heure, ce qui signifie que la vérification a échoué, facultatif
- jti : ID JWT, principalement utilisé pour générer un jeton unique, paramètres facultatifs
- En plus des officiels, nous pouvons également définir certains champs personnalisés, mais étant donné que BASE64 est réversible, ne mettez pas d'informations sensibles
- Voici un exemple
La charge utile ci-dessus est générée après le cryptage BASE64. Le jeton est
{ "iss": "labs_purifier-api-panel", "iat": 1552975878, "exp": 1555567878, "aud": "http://ff-labs_purifier-api-test.fenda.io/prod/v1/auth/jwt", "sub": "1501385611884704", "scopes": [ "register", "open", "login", "panel" ] }
eyJpc3MiOiJsYWJzX3B1cmlmaWVyLWFwaS1wYW5lbCIsImlhdCI6MTU1Mjk3NTg3OCwiZXhwIjoxNTU1NTY3ODc4LCJhdWQiOiJodHRwOi8vZmYtbGFic19wdXJpZmllci1hcGktdGVzdC5mZW5kYS5pby9wcm9kL3YxL2F1dGgvand0Iiwic3ViIjoiMTUwMTM4NTYxMTg4NDcwNCIsInNjb3BlcyI6WyJyZWdpc3RlciIsIm9wZW4iLCJsb2dpbiIsInBhbmVsIl19
HMACSHA256( base64UrlEncode(header) + "." + base64UrlEncode(payload), secret)
Authorization: Bearer <token>
Générer le token
Jeton de vérificationdef create_token(): payload={ "iss": "labs_purifier-api-panel", "iat": 1552975878, "exp": 1555567878, "aud": Config.AUDIENCE, "sub": "1501385611884704", "scopes": [ "register", "open", "login", "panel" ] } token = jwt.encode(payload, Config.SECRET_KEY, algorithm='HS256') return True, {'access_token': token}
def verify_jwt_token(token): try: payload = jwt.decode(token, Config.SECRET_KEY, audience=Config.AUDIENCE, algorithms=['HS256']) except (ExpiredSignatureError, DecodeError): return False, token if payload: return True, jwt_model
du site Web PHP chinois !
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!

Article chaud

Outils chauds Tags

Article chaud

Tags d'article chaud

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Sujets chauds

Quels sont les avantages et les inconvénients des modèles ?

Google AI annonce Gemini 1.5 Pro et Gemma 2 pour les développeurs

Pour seulement 250$, le directeur technique de Hugging Face vous apprend étape par étape comment peaufiner Llama 3

Partagez plusieurs frameworks de projets open source .NET liés à l'IA et au LLM

Un guide complet sur le débogage et l'analyse des fonctions Golang

Comment enregistrer la fonction d'évaluation
