Maison  >  Article  >  Java  >  Comment Springboot intègre-t-il JWT pour réaliser l'authentification d'identité ?

Comment Springboot intègre-t-il JWT pour réaliser l'authentification d'identité ?

王林
王林avant
2023-05-14 19:25:101477parcourir

1. Qu'est-ce que JWT

JSON Web Token (JWT), c'est actuellement la solution d'authentification inter-domaines la plus populaire. Le développement actuel des projets implique généralement la séparation du front-end et du end-end, ce qui implique des problèmes inter-domaines et d'authentification.

2. La composition JWT

se compose de trois parties : En-tête, Charge utile et signature

En-tête :

Les informations d'en-tête se composent de deux parties 1. Soit Le type de jeton, c'est-à-dire JWT 2. L'algorithme de signature ; utilisé, comme HMASSHA256 ou RSA ; L'attribut typ dans ce json est utilisé pour identifier que l'intégralité de la chaîne de jeton est une chaîne JWT ; son attribut alg est utilisé pour indiquer l'algorithme de signature et de résumé utilisé lors de l'émission de ce JWT. les attributs typ et alg sont en fait un algorithme de type, ce qui signifie respectivement type et algorithme. La raison pour laquelle ils sont représentés par trois lettres est également basée sur la prise en compte de la taille finale de la chaîne de JWT. Elle est également cohérente avec le nom de JWT, ce sont donc tous les trois caractères... typ et alg sont les attributs spécifiés dans. le nom de la norme JWT.

Payload :

payload est utilisé pour transporter les données à transmettre. Sa structure json est en fait un ensemble d'instructions sur les données à transmettre par JWT. Ces instructions sont appelées revendications par la norme JWT One. La « paire de valeurs d'attribut » est en fait une revendication (exigence), et chaque revendication représente une signification et une fonction spécifiques.

Nous pouvons inclure certaines informations commerciales dans la réclamation.

Signature (signature) :

La signature est constituée des deux chaînes obtenues après l'encodage base64url de la structure json correspondant à l'en-tête et à la charge utile, assemblées avec la « période anglaise », puis générées selon l'algorithme de signature spécifié par alg dans l'en-tête de.

Différents algorithmes conduisent à des résultats de signature différents. Prenons alg : HS256 comme exemple pour illustrer comment obtenir la signature précédente.


Selon la description précédente des valeurs disponibles d'alg, HS256 contient en fait deux algorithmes : l'algorithme HMAC et l'algorithme SHA256, le premier est utilisé pour générer un résumé, et le second est utilisé pour signer numériquement le résumé. Ces deux algorithmes peuvent également être collectivement appelés HMACSHA256

schéma de structure de données jwt :

Comment Springboot intègre-t-il JWT pour réaliser lauthentification didentité ? 3. Principe de fonctionnement de JWT

1 La première demande de connexion envoyée contiendra inévitablement les informations utilisateur uname et pwd

2. les informations utilisateur uname et pwd sont connectées avec succès, les informations utilisateur seront générées dans une chaîne cryptée via la classe d'outils jwt

3 La chaîne cryptée sera envoyée au front-end sous la forme d'un en-tête de réponse

4. . Le serveur frontal répondra L'intercepteur intercepte, intercepte la chaîne jwt transportée dans l'en-tête de réponse et la place dans Vuex

5 Lorsque la deuxième requête est effectuée, il y a un intercepteur de requête dans le serveur frontal, qui placera la chaîne jwt dans Vuex dans la requête d'en-tête de la requête Parmi eux

6 Lorsque la requête atteint le serveur backend via une méthode inter-domaines, il y a un autre filtre dans le serveur backend, qui interceptera la chaîne jwt dans le. en-tête de requête. 7. La classe d'outils jwt analysera la chaîne jwt en informations utilisateur et sera finalement vérifiée

4. Springboot intègre JWT

Idée générale :

Lorsque le front-end accède à l'interface de connexion backend pour se connecter, il détermine d'abord si l'utilisateur existe dans la table utilisateur en fonction du nom d'utilisateur et du mot de passe. Si l'utilisateur existe, alors pour générer une chaîne jwt, vous pouvez ajouter des informations commerciales (telles que le compte de connexion, le vrai nom de l'utilisateur, etc.) à la chaîne jwt et renvoie la chaîne jwt au front-end

L'extrémité actuelle récupère la chaîne jwt et la place dans l'en-tête de toutes les requêtes, comme token=jwt string

Développez un filtre au niveau du backend pour intercepter tout demandes (sauf les demandes de connexion, car la demande de connexion n'a pas généré de jwt), et obtenez jwt (c'est-à-dire la valeur du jeton) à partir de l'en-tête de la demande, et vérifiez la somme de contrôle jwt. Obtenez les informations commerciales dans le jwt et mettez les informations commerciales dans l'en-tête de la requête, afin que l'interface back-end puisse les obtenir directement à partir de l'en-tête. Si le jwt dans le filtre expire ou si la vérification échoue, une invite sera renvoyée au front-end, et le front-end renverra la page de connexion pour permettre aux utilisateurs de se reconnecter.

1. Introduisez les dépendances dans pom.

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