Cet 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
{ "alg": "HS256", "typ": "JWT" }
eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9
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>
def 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!