OAuth 2.0 et autorisation JWT en C# : guide pratique

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

Introduction : pourquoi OAuth 2.0 et JWT sont-ils nécessaires dans les applications modernes ?

\n

Dans le développement web moderne, la sécurité des données et la gestion des accès deviennent primordiales. Chaque jour, des millions d'utilisateurs se connectent à des applications via Google, Facebook ou des systèmes d'entreprise sans transmettre directement leurs mots de passe. C'est là qu'interviennent les protocoles OAuth 2.0 et la technologie JWT (JSON Web Tokens).

\n

OAuth 2.0 est une norme industrielle pour la délégation d'accès. Elle permet aux applications d'obtenir un accès limité aux ressources d'un utilisateur sans divulguer ses identifiants. JWT, quant à lui, est un format de jeton compact et autonome qui contient toutes les informations nécessaires à l'authentification et à l'autorisation.

\n

Dans cet article, nous allons voir en pratique comment implémenter OAuth 2.0 et l'autorisation JWT en C# avec ASP.NET Core. Vous apprendrez à configurer un serveur d'autorisation, générer des jetons et protéger vos points de terminaison API. Tous les exemples de code sont prêts à être utilisés dans des projets réels.

\n\n

1. Configuration du serveur d'autorisation avec IdentityServer4

\n

Pour implémenter OAuth 2.0, nous utiliserons la bibliothèque populaire IdentityServer4 — un framework pour ASP.NET Core qui implémente les protocoles OpenID Connect et OAuth 2.0. Commençons par créer un serveur d'autorisation minimal.

\n\n

Étape 1 : Installation des packages et création du projet

\n

Créez un nouveau projet ASP.NET Core Web Application (modèle vide) et installez les packages NuGet nécessaires :

\n
dotnet add package IdentityServer4\ndotnet add package Microsoft.AspNetCore.Authentication.JwtBearer
\n\n

Étape 2 : Configuration des clients et des ressources

\n

Définissez des utilisateurs de test, des clients et des ressources protégées. Créez la classe Config.cs :

\n
public static class Config\n{\n    public static IEnumerable<IdentityResource> IdentityResources =>\n        new[] { new IdentityResources.OpenId(), new IdentityResources.Profile() };\n\n    public static IEnumerable<ApiScope> ApiScopes =>\n        new[] { new ApiScope("api1", "My API") };\n\n    public static IEnumerable<Client> Clients =>\n        new[]\n        {\n            new Client\n            {\n                ClientId = "client",\n                AllowedGrantTypes = GrantTypes.ClientCredentials,\n                ClientSecrets = { new Secret("secret".Sha256()) },\n                AllowedScopes = { "api1" }\n            }\n        };\n}
\n\n

Étape 3 : Enregistrement des services dans Startup.cs

\n

Configurez IdentityServer dans la méthode ConfigureServices :

\n
public void ConfigureServices(IServiceCollection services)\n{\n    services.AddIdentityServer()\n        .AddInMemoryIdentityResources(Config.IdentityResources)\n        .AddInMemoryApiScopes(Config.ApiScopes)\n        .AddInMemoryClients(Config.Clients)\n        .AddTestUsers(TestUsers.Users);\n\n    services.AddAuthentication()\n        .AddJwtBearer("Bearer", options =>\n        {\n            options.Authority = "https://localhost:5001";\n            options.TokenValidationParameters = new TokenValidationParameters\n            {\n                ValidateAudience = false\n            };\n        });\n}
\n

Dans la méthode Configure, ajoutez l'appel app.UseIdentityServer().

\n\n

2. Implémentation des jetons JWT : génération et validation

\n

Un jeton JWT se compose de trois parties : l'en-tête (header), la charge utile (payload) et la signature (signature). Dans .NET, la génération et la vérification des JWT s'effectuent à l'aide de mécanismes intégrés.

\n\n

Génération manuelle d'un jeton JWT

\n

Il est parfois nécessaire de créer un jeton manuellement, par exemple pour les tests. Utilisez le code suivant :

\n
using System.IdentityModel.Tokens.Jwt;\nusing Microsoft.IdentityModel.Tokens;\nusing System.Security.Claims;\nusing System.Text;\n\npublic string GenerateJwtToken(string userI                

Blogs

Book Recommendations