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.JwtBearerAddAuthentication
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.TokenValidationParameterscontrolla l'emittente, l'audience, la chiave di firma e la durata.UseAuthentication()deve precedereUseAuthorization().- Utilizzi
Authorityper 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
- Struttura e claim JWT
- Configurazione dell'autenticazione JWT Bearer
- Emissione dei token
- Token di rinnovo e scadenza