0Pricing
C# Academy · Lezione

Configurazione dell'autenticazione JWT Bearer

Configuri la convalida dei token nella pipeline.

Configurazione dell'autenticazione JWT Bearer è una lezione C# Academy gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento C# Academy, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso C# Academy include 4 lezioni in totale.

Il gestore JWT Bearer

ASP.NET Core convalida i JWT in ingresso usando il gestore di autenticazione JWT Bearer del pacchetto Microsoft.AspNetCore.Authentication.JwtBearer.

Legge il token dall'intestazione Authorization: Bearer ..., lo convalida e crea un ClaimsPrincipal.

dotnet add package Microsoft.AspNetCore.Authentication.JwtBearer

AddAuthentication

La registrazione inizia con AddAuthentication. Imposti lo schema predefinito, in modo che il framework sappia quale gestore usare quando non viene specificato alcuno schema.

JwtBearerDefaults.AuthenticationScheme è la stringa "Bearer".

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

Opzioni di AddJwtBearer

L'overload di AddJwtBearer accetta un delegato per le opzioni, tramite il quale si configura il modo in cui vengono convalidati i token.

La proprietà più importante è TokenValidationParameters.

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

Convalida dell'emittente e dell'audience

Imposti ValidateIssuer e ValidateAudience per assicurarsi che il token provenga dalla propria autorità attendibile e sia destinato alla propria API.

ValidIssuer e ValidAudience devono corrispondere ai claim iss e aud nel token.

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

Convalida della chiave di firma

È il controllo più importante per la sicurezza: ValidateIssuerSigningKey insieme a un IssuerSigningKey. In questo modo si conferma che la firma sia stata prodotta con il proprio segreto.

Per la firma simmetrica (HS256), crei una SymmetricSecurityKey a partire dai byte del segreto.

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

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

Convalida della durata

ValidateLifetime = true rifiuta i token scaduti verificando i claim exp e nbf.

ClockSkew aggiunge una tolleranza per le differenze tra gli orologi dei server. Il valore predefinito è di 5 minuti; lo riduca per i token di breve durata.

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

Riunire il tutto

Una configurazione completa, adatta alla produzione, combina tutti i parametri di convalida in un unico punto.

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)
        };
    });

L'ordine del middleware

La sola configurazione non è sufficiente. È necessario aggiungere il middleware di autenticazione e quello di autorizzazione alla pipeline, rispettando l'ordine corretto.

UseAuthentication deve precedere UseAuthorization.

var app = builder.Build();

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

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

Protezione degli endpoint

Una volta completata la configurazione, applichi [Authorize] agli endpoint (controller) oppure .RequireAuthorization() alle API minimali per richiedere un token valido.

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

Uso di un'autorità attendibile

Se i token provengono da un provider di identità esterno (ad esempio Microsoft Entra ID o Auth0), imposti Authority anziché una chiave statica.

Il gestore scaricherà quindi automaticamente le chiavi di firma dal documento di discovery del provider.

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

Analisi degli errori di convalida

JWT Bearer genera eventi a cui può collegarsi per la registrazione dei log o per risposte personalizzate, come OnAuthenticationFailed e OnChallenge.

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

Verifica rapida

Verifichi la comprensione della configurazione della pipeline.

Riepilogo

Ha configurato l'autenticazione JWT Bearer:

  • AddAuthentication(...).AddJwtBearer(...) registra il gestore.
  • TokenValidationParameters controlla l'emittente, l'audience, la chiave di firma e la durata.
  • UseAuthentication() deve precedere UseAuthorization().
  • Utilizzi Authority per i provider di identità esterni.

Successivamente vedrà come emettere i propri token.

Domande Frequenti

La lezione «Configurazione dell'autenticazione JWT Bearer» è gratuita?

Sì — il testo completo di «Configurazione dell'autenticazione JWT Bearer» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso C# Academy, passa a CoddyKit PRO. Il corso C# Academy include 4 lezioni in totale.

Cosa imparerò in «Configurazione dell'autenticazione JWT Bearer»?

Configuri la convalida dei token nella pipeline. Eserciti C# Academy con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.

Ho bisogno di esperienza per iniziare C# Academy?

Non è richiesta alcuna esperienza precedente. C# Academy su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.

Quanto tempo richiede la lezione «Configurazione dell'autenticazione JWT Bearer»?

La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.

Posso scrivere ed eseguire codice in questa lezione C# Academy?

Sì. Ogni lezione C# Academy include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.

Tutte le lezioni di questo corso

  1. Struttura e claim JWT
  2. Configurazione dell'autenticazione JWT Bearer
  3. Emissione dei token
  4. Token di rinnovo e scadenza
← Torna a C# Academy