0Pricing
C# Academy · Lezione

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 = true

Aggiungere 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.
  • RequireClaim verifica l'esistenza del claim o specifici valori consentiti.
  • RequireAssertion gestisce 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

  1. Autorizzazione basata sui ruoli
  2. Autorizzazione basata sui claim
  3. Autorizzazione basata sulle policy
  4. Requisiti di autorizzazione personalizzati
← Torna a C# Academy