Authentification par jeton de porteur dans lapi web
.NET 8.0 - Sécurisation de l’API avec JWT Bearer Token
Comprendre l’authentification API à l’aide de JWT Bearer Tokens
Dans le paysage moderne du développement Web, la sécurisation des API est primordiale. L’une des méthodes les plus robustes pour y parvenir consiste à utiliser l’authentification API à l’aide de JWT (JSON Web Tokens) comme jetons Bearer. Cet article de blog se penchera sur le quoi, le pourquoi et le comment de l’authentification JWT Bearer Token.
Qu’est-ce que JWT ?
JWT, ou JSON Web Token, est une norme ouverte (RFC 7519) permettant de transmettre en toute sécurité des informations entre les parties en tant qu’objet JSON. Ces informations peuvent être vérifiées et fiables car elles sont signées numériquement. Les JWT peuvent être signés à l’aide d’un secret (avec l’algorithme HMAC) ou d’une paire de clés publique/privée à l’aide de RSA ou ECDSA.
Structure d’un JWT
Un JWT se compose de trois parties séparées par des points (.) : En-tête, Charge utile et Signature.
- En-tête : l’en-tête se compose généralement de deux parties : le type de jeton (JWT) et l’algorithme de signature (par exemple, HMAC SHA256 ou RSA).
- Charge utile : la charge utile contient les revendications. Les revendications sont des déclarations concernant une entité (généralement, l’utilisateur) et des données supplémentaires. Il existe trois types de créances : les créances enregistrées, les créances publiques et les créances privées.
- Signature : pour créer la partie signature, vous devez prendre l’en-tête codé, la charge utile codée, un secret et l’algorithme spécifié dans l’en-tête, et les signer.
Pourquoi utiliser JWT pour l’authentification API ?
- Absence d’état : les JWT sont sans état ; le serveur n’a pas besoin de stocker les informations de session. Cela les rend évolutifs et réduit la charge sur le serveur.
- sécurité: Les JWT sont signés afin que le destinataire puisse vérifier l’authenticité du jeton.
- Compact : les JWT sont compacts, ce qui les rend efficaces pour l’envoi d’en-têtes HTTP.
- Interopérabilité : en tant que norme basée sur JSON, les JWT sont faciles à utiliser dans différents langages de programmation et plateformes.
Comment fonctionne l’authentification par jeton porteur JWT
Voici une explication étape par étape du fonctionnement général de l’authentification par jeton porteur JWT :
- Connexion client : le client envoie une demande de connexion avec les informations d’identification de l’utilisateur au serveur.
- Vérification du serveur : le serveur vérifie les informations d’identification. Le serveur crée un JWT avec les informations de l’utilisateur si elles sont correctes.
- Émission de jetons : le serveur renvoie le JWT au client.
- Demandes ultérieures : pour chaque demande ultérieure, le client inclut le JWT dans l’en-tête Authorization en tant que jeton Bearer.
- Vérification du jeton : Le serveur vérifie la signature du jeton et vérifie la validité du jeton (date d’expiration, émetteur, etc.). S’il est valide, le serveur traite la demande. Si ce n’est pas le cas, il renvoie une erreur non autorisée.
Exemple d’implémentation JWT :
Passons en revue l’implémentation du jeton JWT dans l’API .NET 8.0 à l’aide de l’architecture propre.
Configuration de lasolution et du projet :
Tout d’abord, configurez DB et ses objets, vous pouvez utiliser les scripts partagés dans le dossier de l’exemple de code.
Une fois que notre backend est prêt, ouvrez Visual Studio 2022 et configurez les projets requis à l’aide de l’architecture propre, si vous souhaitez en savoir plus sur l’implémentation de l’architecture propre, veuillez consulter cet article.
Configurer la couche centrale : sous la solution, créez un projet de bibliothèque de classes et nommez-le .
- Ajoutez un nouveau dossier et ajoutez une nouvelle classe d’entité avec le nom .
Configurer la couche d’application : ajoutez un autre projet de bibliothèque de classes et nommez-le.
- Ajoutez une référence au projet.
- Ajoutez un nouveau dossier, créez une nouvelle interface et nommez-la comme .
- Créez également une nouvelle interface et nommez-la pour implémenter l’unité de travail.
Configurer la couche d’infrastructure : ajoutez un nouveau projet de bibliothèque de classes et nommez-le.
- Ajoutez les packages requis à utiliser dans ce projet.
- Ajoutez la référence aux projets (et ), puis ajoutez un nouveau dossier .
- après qu’il faut implémenter l’interface, en créant une nouvelle classe .
- Implémentez également l’interface, en créant une nouvelle classe
- Enfin, inscrivez les interfaces avec les implémentations dans le conteneur de service .NET Core. Ajoutez une nouvelle classe static et ajoutez la méthode RegisterServices en dessous en injectant .
- Plus tard, nous l’enregistrerons sous la méthode ConfigureService de l’API.
Configurer un projet d’API : ajoutez un nouveau projet d’API Web .NET 8.0 et nommez-le.
- Ajoutez la référence aux projets (et ), puis ajoutez les packages ci-dessous.
- Configurez le fichier pour gérer les paramètres de l’API et remplacez votre chaîne de connexion à la base de données sous la section.
- Ajoutez une clé secrète pour vérifier et signer les jetons JWT.
-
Configurez les paramètres de démarrage, tels que RegisterServices (définis sous le projet), et ajoutez l’interface utilisateur Swagger (avec comme schéma d’authentification).
-
Supprimez les classes de contrôleur/modèle par défaut et ajoutez deux classes ( et ) dans le dossier Modèle, pour gérer les demandes et les réponses d’API.
-
Ajoutez un dossier et ajoutez les classes ci-dessous.
- - pour mapper les options à partir du fichier.
- - pour valider l’autorisation.
- - Ajoutez une méthode GenerateJwtToken pour générer le jeton JWT.
- - Pour valider le jeton et attacher l’utilisateur au contexte en cas de validation réussie de Jwt.
-
Ajoutez un nouveau contrôleur et nommez-le .
- Implémentez l’API pour valider l’utilisateur et générer le jeton.
- API pour renvoyer tous les utilisateurs, et ajouter un attribut pour le mettre derrière la sécurité de l’API.
Examinez la structure finale du projet :
Exécuter et tester l’API :
exécutez le projet et testez les méthodes de l’API.
-
L’exécution
de -
l’API sans authentification génère une erreur.
-
Authentifiez l’utilisateur et obtenez un jeton JWT à l’aide de l’API.
-
Ajouter une autorisation d’API.
-
GET - Obtenir tous les utilisateurs.
REMARQUE :
Vérifiez le code source ici.
Si vous avez des commentaires ou des suggestions, n’hésitez pas à les laisser dans la section des commentaires ci-dessous.