Autorisation et authentification en C# (.NET) — guide complet

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

Autorisation et authentification en C# (.NET)

Dans le développement web moderne sur la plateforme .NET, les thèmes de l'authentification (vérification de l'identité de l'utilisateur) et de l'autorisation (vérification des droits d'accès) sont fondamentaux. Les bibliothèques et mécanismes intégrés d'ASP.NET Core fournissent une boîte à outils puissante et flexible pour implémenter ces tâches. Dans cet article, nous analyserons en détail les approches principales, y compris l'utilisation de JWT (JSON Web Tokens), ASP.NET Core Identity et les composants middleware intégrés.



Concepts de base

  • Authentification (Authentication) — processus de vérification de l'identité de l'utilisateur (par exemple, login + mot de passe).
  • Autorisation (Authorization) — processus de détermination de ce que l'utilisateur peut faire (rôles, politiques, claims).
  • Claims-based identity — approche où les informations sur l'utilisateur sont stockées sous forme d'un ensemble de revendications (claims).


ASP.NET Core Identity

ASP.NET Core Identity est un système complet de gestion des utilisateurs qui inclut l'inscription, la connexion, la réinitialisation du mot de passe, l'authentification à deux facteurs et la gestion des rôles. Il utilise Entity Framework Core pour stocker les données dans la base.

Pour connecter Identity dans un projet, il suffit d'ajouter l'appel AddDefaultIdentity et de configurer la chaîne de connexion. Exemple de configuration de base dans Program.cs :

using Microsoft.AspNetCore.Identity;using Microsoft.EntityFrameworkCore;using YourApp.Data;

var builder = WebApplication.CreateBuilder(args);

// Ajout du contexte de base de donnéesbuilder.Services.AddDbContext<ApplicationDbContext>(options => options.UseSqlServer(builder.Configuration.GetConnectionString("DefaultConnection")));

// Ajout d'Identitybuilder.Services.AddDefaultIdentity<IdentityUser>(options => { options.SignIn.RequireConfirmedAccount = false; options.Password.RequireDigit = true; options.Password.RequiredLength = 6;}).AddRoles<IdentityRole>().AddEntityFrameworkStores<ApplicationDbContext>();

builder.Services.AddControllersWithViews();

var app = builder.Build();

app.UseAuthentication();app.UseAuthorization();

app.MapRazorPages();app.Run();

Ensuite, les pages standard d'inscription et de connexion seront disponibles, ainsi que les méthodes pour vérifier les rôles :

[Authorize(Roles = "Admin")]public IActionResult AdminPanel(){    return View();}


Authentification JWT (JSON Web Tokens)

JWT est un moyen compact et autonome de transmettre des informations entre les parties sous forme d'objet JSON. Dans .NET, JWT est souvent utilisé pour créer des API REST et des applications SPA. La bibliothèque principale est Microsoft.AspNetCore.Authentication.JwtBearer.

Configuration de JWT dans Program.cs :

using Microsoft.AspNetCore.Authentication.JwtBearer;using Microsoft.IdentityModel.Tokens;using System.Text;

var builder = WebApplication.CreateBuilder(args);

var key = Encoding.ASCII.GetBytes("YourSuperSecretKeyThatIsAtLeast32CharactersLong!");

builder.Services.AddAuthentication(options =>{ options.DefaultAuthenticateScheme = JwtBearerDefaults.AuthenticationScheme; options.DefaultChallengeScheme = JwtBearerDefaults.AuthenticationScheme;}).AddJwtBearer(options =>{ options.TokenValidationParameters = new TokenValidationParameters { ValidateIssuer = true, ValidateAudience = true, ValidateLifetime = true, ValidateIssuerSigningKey = true, ValidIssuer = "yourdomain.com", ValidAudience = "yourdomain.com", IssuerSigningKey = new SymmetricSecurityKey(key) };});

builder.Services.AddAuthorization();builder.Services.AddControllers();

var app = builder.Build();app.UseAuthentication();app.UseAuthorization();app.MapControllers();app.Run();

Exemple

Recommendations