Autorizzazione basata sui claim
Autorizzi in base ai claim dell'utente.
Autorizzazione basata sui claim è 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.
Oltre i ruoli
I ruoli sono un caso particolare dei claim. L'autorizzazione basata sui claim verifica qualsiasi claim, ad esempio email, reparto, livello di abbonamento o flag di autorizzazione, non solo i ruoli.
In questo modo ottiene un controllo più preciso senza dover inventare decine di ruoli.
// Claims a user might carry:
// department = sales
// subscription = pro
// email_verified = trueAggiungere claim a un token
Emetta i claim che le Sue regole di autorizzazione dovranno verificare. Un claim è una coppia tipo/valore.
var claims = new List<Claim>
{
new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
new Claim("department", "sales"),
new Claim("subscription", "pro"),
new Claim("email_verified", "true")
};Definire una policy basata sui claim
Le regole basate sui claim vengono espresse tramite policy denominate registrate con AddAuthorization. RequireClaim richiede che l'utente disponga di un determinato claim.
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("VerifiedEmail", policy =>
policy.RequireClaim("email_verified", "true"));
});RequireClaim senza valore
Se Le interessa solo che il claim esista (indipendentemente dal valore), chiami RequireClaim specificando soltanto il tipo.
options.AddPolicy("HasDepartment", policy =>
policy.RequireClaim("department"));RequireClaim con valori consentiti
Può elencare i valori consentiti; la policy viene superata se il claim corrisponde ad almeno uno di essi.
options.AddPolicy("PaidTier", policy =>
policy.RequireClaim("subscription", "pro", "enterprise"));Applicare una policy basata sui claim
Faccia riferimento alla policy per nome in [Authorize].
[Authorize(Policy = "PaidTier")]
[HttpGet("premium-reports")]
public IActionResult Reports() => Ok();Utilizzo con le Minimal API
Le Minimal API fanno riferimento allo stesso nome della policy tramite RequireAuthorization.
app.MapGet("/premium-reports", () => Results.Ok())
.RequireAuthorization("PaidTier");Combinare più requisiti basati sui claim
Una policy può concatenare più chiamate a RequireClaim; devono essere tutte soddisfatte (AND).
options.AddPolicy("VerifiedSales", policy =>
policy
.RequireClaim("email_verified", "true")
.RequireClaim("department", "sales"));RequireAssertion per la logica personalizzata
Quando una verifica basata su un valore fisso non è sufficiente, RequireAssertion esegue un predicato arbitrario su ClaimsPrincipal.
options.AddPolicy("AdultUser", policy =>
policy.RequireAssertion(ctx =>
{
var dob = ctx.User.FindFirst("birthdate")?.Value;
return DateTime.TryParse(dob, out var d) &&
d <= DateTime.UtcNow.AddYears(-18);
}));Leggere i claim a runtime
All'interno di un'azione può comunque esaminare direttamente i claim quando Le serve il valore, non solo una condizione di accesso sì/no.
var dept = User.FindFirst("department")?.Value;
var isPro = User.HasClaim("subscription", "pro");Claim e ruoli: quale usare e quando
Utilizzi i ruoli per le funzioni professionali generali. Utilizzi i claim per gli attributi e i flag delle funzionalità. Possono essere combinati: una policy può richiedere insieme un ruolo e diversi claim.
options.AddPolicy("SalesManager", policy =>
policy.RequireRole("manager")
.RequireClaim("department", "sales"));Verifica rapida
Verifichi la Sua comprensione delle policy basate sui claim.
Riepilogo
Ha appreso l'autorizzazione basata sui claim:
- Qualsiasi claim, non solo i ruoli, può controllare l'accesso.
RequireClaimverifica l'esistenza del claim o specifici valori consentiti.RequireAssertiongestisce la logica di predicati personalizzati.- Claim e ruoli possono essere combinati all'interno di un'unica policy denominata.
Successivo: il modello completo basato sulle policy.
Domande Frequenti
La lezione «Autorizzazione basata sui claim» è gratuita?
Sì — il testo completo di «Autorizzazione basata sui claim» è 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 «Autorizzazione basata sui claim»?
Autorizzi in base ai claim dell'utente. 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 «Autorizzazione basata sui claim»?
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
- Autorizzazione basata sui ruoli
- Autorizzazione basata sui claim
- Autorizzazione basata sulle policy
- Requisiti di autorizzazione personalizzati