• Email : contact@refbax.com

Mise en œuvre de l’authentification basée sur l’identité dans les API minimalistes d’ASP.NET Core : mode d’emploi

Facebook
Twitter
LinkedIn
Temps de lecture : 4 minutes

Hé, les développeurs ! Aujourd’hui, on va aborder un sujet qui devrait réjouir les fans des API REST : comment implémenter l’authentification basée sur l’identité dans une API minimaliste ASP.NET Core. Pourquoi s’embêter avec ça, allez-vous me dire ? Eh bien, parce que dans la vraie vie (cette chose bizarre en dehors de nos écrans), on aura souvent besoin d’authentifier nos utilisateurs et de contrôler leurs accès. Et ce, même dans nos micro-services et nos API aussi minimalistes que votre dernière déclaration d’impôts.

L’heure est venue d’arrêter de fabriquer des APIs passe-partout

Certes, les APIs minimalistes d’ASP.NET Core sont conçues pour être légères et peu encombrantes. Mais ça ne veut pas dire qu’on doit les laisser grandes ouvertes à tous les vents ! À moins que vous ne vouliez vous réveiller un jour avec votre précieux code détourné par des pirates en formation (on parle d’apprenants éthiques, rassurez-vous).

Pour éviter ce genre de désagrément, Microsoft a prévu le coup en intégrant nativement dans ASP.NET Core un Framework dédié à la gestion d’identité. Cette fonctionnalité puissante et personnalisable vous permettra d’implémenter facilement différents mécanismes d’authentification et d’autorisation pour vos APIs. Que demander de plus ? (À part peut-être un peu plus de café, mais ça, c’est une autre histoire.)

Le plan d’attaque en quelques points

Bon, trêve de plaisanteries, voici notre feuille de route pour sécuriser une API minimaliste :

  1. Installer les bons packages NuGet
  2. Créer un DbContext personnalisé
  3. Configurer les services d’authentification et d’autorisation
  4. Définir les endpoints sécurisés
  5. Tester, déboguer, réitérer (la partie la plus fun)

Rien de bien sorcier, vous allez voir ! Mais avant de nous lancer dans le code, faisons un petit détour théorique. (Désolé, c’est pour la culture générale.)

Petite piqûre de rappel sur l’authentification et l’autorisation

L’authentification, c’est le processus qui permet d’identifier un utilisateur avec certitude. Un peu comme montrer patte blanche à l’entrée d’un club privé. L’autorisation, en revanche, consiste à déterminer ce que cet utilisateur a le droit de faire ou non au sein de l’application. Par exemple, un simple membre ne pourra pas accéder à la salle VIP réservée aux félins de la Night (à moins d’être un lion confirmé, bien sûr).

L’Identity Framework de Microsoft gère à la fois l’authentification et l’autorisation, en plus de fonctionnalités annexes comme la gestion des utilisateurs, des rôles et du hachage des mots de passe.

En résumé, une solution tout-en-un qui devrait nous faciliter la tâche. Mais assez parlé, place à l’action !

À vos claviers ! Mettons en pratique…

Prérequis et installation

Pour suivre cet atelier, vous aurez besoin des éléments suivants :

  • Visual Studio 2022 (la dernière version en date)
  • Une connexion Internet (pour récupérer les packages NuGet)
  • Beaucoup de café (ou la boisson énergisante de votre choix)

Commencez par créer un nouveau projet ASP.NET Core Web API. Dans l’assistant, décochez l’option « Use controllers » puisque nous allons travailler avec des APIs minimalistes. Laissez aussi l’authentification par défaut à « None » pour l’instant.

Une fois le projet initialisé, il est temps d’installer les packages NuGet nécessaires. Ouvrez la Console du Gestionnaire de Packages NuGet et entrez les commandes suivantes :

Install-Package Microsoft.AspNetCore.Identity.EntityFrameworkCoreInstall-Package Microsoft.EntityFrameworkCore.SqlServerInstall-Package Microsoft.EntityFrameworkCore.Design

Voilà, nous avons désormais tous les outils requis ! (Ouf, la partie la plus pénible est derrière nous.)

Création du DbContext personnalisé

Il nous faut maintenant un DbContext pour interagir avec la base de données. Pas de panique, c’est une formalité pour Entity Framework Core. Dans un nouveau fichier, ajoutez le code suivant :

public class CustomDbContext : IdentityDbContext { public CustomDbContext(DbContextOptions options) : base(options) { }}

Notre DbContext personnalisé hérite de la classe IdentityDbContext fournie par le Framework Identity. Cela nous permettra d’accéder aux fonctionnalités d’authentification et d’autorisation par la suite.

N’oubliez pas d’enregistrer ce nouveau DbContext dans le conteneur de services d’ASP.NET Core. Dans le fichier Program.cs, ajoutez cette ligne :

builder.Services.AddDbContext ();

Configuration de l’authentification et de l’autorisation

Le plus dur est fait ! Il ne nous reste plus qu’à activer l’authentification et l’autorisation au sein de notre application. Toujours dans le Program.cs, insérez ces deux lignes :

builder.Services.AddAuthentication();builder.Services.AddAuthorization();

La première ligne prépare les services d’authentification, tandis que la seconde fait de même pour l’autorisation. Un jeu d’enfant, vous ne trouvez pas ?

Mais ce n’est pas fini ! Nous allons désormais configurer plus en détails les services Identity et EF Core :

builder.Services.AddIdentityApiEndpoints () .AddEntityFrameworkStores ();

Cette méthode AddIdentityApiEndpoints(), introduite dans .NET 8, configure automatiquement les contrôleurs et services nécessaires pour l’authentification et l’autorisation. Elle prend en paramètre le type d’utilisateur (IdentityUser dans notre cas), et nous lions le tout à notre CustomDbContext via AddEntityFrameworkStores.

Le Framework Identity intégré dans ASP.NET Core est à la fois puissant et facile d’utilisation. Les améliorations apportées dans .NET 8 l’ont rendu encore plus robuste et flexible.

Sécurisation des endpoints API

Il ne nous reste plus qu’une dernière étape : sécuriser nos endpoints REST. Dans le fichier Program.cs, mappez d’abord l’API Identity :

app.MapIdentityApi ();

Cette ligne génère automatiquement les routes nécessaires pour la gestion des utilisateurs (inscription, connexion, etc.).

Ensuite, ajoutez l’autorisation sur vos propres endpoints. Par exemple :

app.MapGet("/hellofromaut", () => "Vous êtes connecté !") .RequireAuthorization();

Cette route ne sera accessible qu’aux utilisateurs authentifiés grâce à l’appel à RequireAuthorization().

Et voilà le travail ! Vous pouvez désormais exécuter votre application et tester vos endpoints sécurisés. N’oubliez pas d’ajouter Swagger à votre projet pour une exploration plus conviviale de votre API.

L’authentification n’a plus aucun secret pour vous !

Mesdames et Messieurs, nous y voilà ! Grâce aux différentes étapes que nous venons de parcourir, vous êtes désormais en mesure d’implémenter facilement une authentification basée sur l’identité au sein de vos APIs minimalistes ASP.NET Core.

Profitez-en pour sécuriser tous vos micro-services, vos applications sans interface, bref, tous vos projets où la configuration classique avec contrôleurs et vues ne serait que du poids mort. Le Framework Identity intégré vous permettra de déployer une grande variété de stratégies d’authentification en quelques lignes de code seulement.

Alors, convaincu ? Pour ma part, je suis ravi d’avoir pu vous guider à travers ce processus. N’hésitez pas à me partager vos réussites, vos questionnements ou vos idées d’amélioration. ¡Hasta la vista, developers!

Laisser un commentaire

Sur le même thème 🤩

Qui suis-je ! 👨‍💻

Enfilez-votre cape

Apprenez le webmarketing et le code grâce à nos différentes ressources et améliorez la visibilité de votre site internet, grâce à nos outils SEO.

refbax superhero bas