C# Academy · Leçon

Configurer l’authentification JWT Bearer

Mettez en place la validation des jetons dans le pipeline.

Leçon 2 sur 413 étapes

Configurer l’authentification JWT Bearer est une leçon C# Academy gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage C# Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours C# Academy comprend 4 leçons au total.

Le gestionnaire JWT Bearer

ASP.NET Core valide les JWT entrants à l’aide du gestionnaire d’authentification JWT Bearer du package Microsoft.AspNetCore.Authentication.JwtBearer.

Il lit le jeton dans l’en-tête Authorization: Bearer ..., le valide et construit un ClaimsPrincipal.

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

AddAuthentication

L’enregistrement commence par AddAuthentication. Vous définissez le schéma par défaut afin que l’infrastructure sache quel gestionnaire utiliser lorsqu’aucun schéma n’est spécifié.

JwtBearerDefaults.AuthenticationScheme est la chaîne "Bearer".

builder.Services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer();

Options de AddJwtBearer

La surcharge de AddJwtBearer accepte un délégué d’options dans lequel vous configurez la manière dont les jetons sont validés.

La propriété la plus importante est TokenValidationParameters.

builder.Services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            // configured below
        };
    });

Validation de l’émetteur et de l’audience

Définissez ValidateIssuer et ValidateAudience pour vérifier que le jeton provient de votre autorité de confiance et qu’il était destiné à votre API.

ValidIssuer et ValidAudience doivent correspondre aux revendications iss et aud du jeton.

var tvp = new TokenValidationParameters
{
    ValidateIssuer = true,
    ValidIssuer = builder.Configuration["Jwt:Issuer"],
    ValidateAudience = true,
    ValidAudience = builder.Configuration["Jwt:Audience"]
};

Validation de la clé de signature

Il s’agit du contrôle le plus important pour la sécurité : ValidateIssuerSigningKey avec une IssuerSigningKey. Cela confirme que la signature a été produite avec votre secret.

Pour une signature symétrique (HS256), vous construisez une SymmetricSecurityKey à partir des octets du secret.

var key = new SymmetricSecurityKey(
    Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!));

tvp.ValidateIssuerSigningKey = true;
tvp.IssuerSigningKey = key;

Validation de la durée de vie

ValidateLifetime = true rejette les jetons expirés en vérifiant les revendications exp et nbf.

ClockSkew ajoute une tolérance aux différences d’horloge entre les serveurs. La valeur par défaut est de 5 minutes ; réduisez-la pour les jetons de courte durée.

tvp.ValidateLifetime = true;
tvp.ClockSkew = TimeSpan.FromSeconds(30);

Mise en place complète

Une configuration complète, adaptée à la production, regroupe tous les paramètres de validation au même endroit.

builder.Services
    .AddAuthentication(JwtBearerDefaults.AuthenticationScheme)
    .AddJwtBearer(options =>
    {
        options.TokenValidationParameters = new TokenValidationParameters
        {
            ValidateIssuer = true,
            ValidIssuer = builder.Configuration["Jwt:Issuer"],
            ValidateAudience = true,
            ValidAudience = builder.Configuration["Jwt:Audience"],
            ValidateIssuerSigningKey = true,
            IssuerSigningKey = new SymmetricSecurityKey(
                Encoding.UTF8.GetBytes(builder.Configuration["Jwt:Key"]!)),
            ValidateLifetime = true,
            ClockSkew = TimeSpan.FromSeconds(30)
        };
    });

Ordre des intergiciels

La configuration seule ne suffit pas. Vous devez ajouter les intergiciels d’authentification et d’autorisation à la chaîne d’exécution, et l’ordre est important.

UseAuthentication doit être appelé avant UseAuthorization.

var app = builder.Build();

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

app.MapControllers();
app.Run();

Protection des points de terminaison

Une fois la configuration terminée, marquez les points de terminaison avec [Authorize] (contrôleurs) ou .RequireAuthorization() (API minimales) pour exiger un jeton valide.

app.MapGet("/me", (ClaimsPrincipal user) =>
        new { id = user.FindFirstValue(ClaimTypes.NameIdentifier) })
   .RequireAuthorization();

Utilisation d’une autorité de confiance

Si vos jetons proviennent d’un fournisseur d’identité externe (par exemple, Microsoft Entra ID ou Auth0), définissez Authority au lieu d’une clé statique.

Le gestionnaire télécharge alors automatiquement les clés de signature à partir du document de découverte du fournisseur.

.AddJwtBearer(options =>
{
    options.Authority = "https://login.myidp.com/";
    options.Audience = "my-api";
    // Keys are fetched from the OpenID configuration endpoint
});

Lecture des échecs de validation

JWT Bearer déclenche des événements auxquels vous pouvez vous abonner pour la journalisation ou pour fournir des réponses personnalisées, comme OnAuthenticationFailed et OnChallenge.

options.Events = new JwtBearerEvents
{
    OnAuthenticationFailed = ctx =>
    {
        logger.LogWarning(ctx.Exception, "JWT validation failed");
        return Task.CompletedTask;
    }
};

Vérification rapide

Vérifiez votre compréhension de la configuration de la chaîne d’exécution.

Récapitulatif

Vous avez configuré l’authentification JWT Bearer :

  • AddAuthentication(...).AddJwtBearer(...) enregistre le gestionnaire.
  • TokenValidationParameters contrôle les vérifications de l’émetteur, de l’audience, de la clé de signature et de la durée de vie.
  • UseAuthentication() doit précéder UseAuthorization().
  • Utilisez Authority pour les fournisseurs d’identité externes.

Ensuite : émettre vos propres jetons.

Gratuit pour commencer

Apprends C# avec un tuteur IA — gratuit

Écris et exécute du vrai code dans ton navigateur, obtiens de l'aide instantanée d'un tuteur IA disponible 24h/24, et reprends là où tu t'es arrêté sur le web ou dans l'app.

Cours
93
Leçons
346

Questions Fréquemment Posées

La leçon « Configurer l’authentification JWT Bearer » est-elle gratuite ?

Oui — le texte complet de « Configurer l’authentification JWT Bearer » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours C# Academy, passe à CoddyKit PRO. Le cours C# Academy comprend 4 leçons au total.

Qu'est-ce que j'apprendrai dans « Configurer l’authentification JWT Bearer » ?

Mettez en place la validation des jetons dans le pipeline. Tu pratiques C# Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.

Dois-je avoir de l'expérience pour commencer C# Academy ?

Aucune expérience préalable n'est requise. C# Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.

Combien de temps prend la leçon « Configurer l’authentification JWT Bearer » ?

La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.

Peux-tu écrire et exécuter du code dans cette leçon C# Academy ?

Oui. Chaque leçon C# Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.

Toutes les leçons de ce cours

  1. Structure et revendications JWT
  2. Configurer l’authentification JWT Bearer
  3. Émettre des jetons
  4. Jetons d’actualisation et expiration
← Retour à C# Academy