Dans le blog précédent de cette série, nous avons examiné les bases de JWT. Nous allons passer à la construction de l’API Spring que nous allons utiliser pour l’authentification JWT dans ce tutoriel.
L’API
L’API que nous utiliserons dans l’exemple donne accès aux profils d’utilisateurs. Il a les endpoints suivants:
- GET / profiles / {: nom d’utilisateur}
- GET / profiles / details / {: nom d’utilisateur}
Les profils que nous utilisons pour cet exemple ont été générés en utilisant le Random User Generator et stockés dans un fichier JSON, par commodité pour cet exemple. Dans un contexte réel, on aurait utiliser une base de donnée. Tout le code de cet exemple est disponible sur GitHub.
Structure du profil utilisateur
Pour cet exemple, j’ai spécifiquement généré 500 profils aléatoires avec seulement un sous-ensemble de champs – nom, email, login et image. Avec ces champs, un profil a la structure suivante:
À ce stade, vous pouvez voir le mot de passe et le hachage ici.
Modèle de données
Les modèles pour représenter les données fournies par le générateur d’utilisateur aléatoire sont les suivants. Nous utiliserons l’annotation Lombok @Data pour ne pas avoir à écrire des setters et getters de façon explicite. est une bibliothèque Java qui permet de minimiser le code boilerplate, en les remplaçant par un ensemble d’annotations pratiques. J’ai d’ailleurs écrit un article sur le sujet pour plus d’informations.
Profile
Name
Login
Picture
Nous allons également créer deux autres modèles de données qui exposent un minimum d’informations de profil sans les informations d’identification.
MinimalProfile
DetailedProfile
Le controlleur
Il délègue l’interrogation des profils au ProfileService et lance des exceptions si un profil n’est pas présent. Notez l’utilisation de Java Optional pour lancer des exceptions.
ProfilService
Gestion des exceptions
Nous aurons également besoin d’implémenter un ControllerAdvice pour gérer les exceptions de manière appropriée:
Avec ceci, vous devriez avoir un service de profil opérationnel.
Le code de l’application jusqu’à présent peut être trouvé ici. Dans le prochain billet de la série, nous allons câbler Spring Security et créer une fonctionnalité de connexion qui émet un JWT après une connexion réussie.