C# Academy · leksjon

Policybasert autorisasjon

Definer gjenbrukbare autorisasjonspolicyer.

Leksjon 3 av 413 trinn

Policybasert autorisasjon er en gratis leksjon i C# Academy på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i C# Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i C# Academy inneholder totalt 4 leksjoner.

Policy-modellen

I ASP.NET Core går alle autorisasjonskontroller til syvende og sist gjennom en policy. Rolle- og claims-attributter er kortformer som bygger policyer i bakgrunnen.

Ved å definere navngitte policyer samler De reglene på ett sted og holder kontrollerne ryddige.

[Authorize(Policy = "CanManageOrders")]

AddAuthorization

Registrer policyer i tjenestebeholderen med AddAuthorization. Hver policy får et unikt navn.

builder.Services.AddAuthorization(options =>
{
    options.AddPolicy("CanManageOrders", policy =>
        policy.RequireRole("admin", "sales"));
});

RequireAuthenticatedUser

Det mest grunnleggende kravet er ganske enkelt at brukeren er logget inn. RequireAuthenticatedUser avviser anonyme kallere.

options.AddPolicy("SignedIn", policy =>
    policy.RequireAuthenticatedUser());

Kombinere krav

En policybygger lenker sammen flere krav; policyen lykkes bare hvis alle blir oppfylt.

options.AddPolicy("SeniorEditor", policy =>
    policy
        .RequireAuthenticatedUser()
        .RequireRole("editor")
        .RequireClaim("seniority", "senior"));

Standardpolicyen

En enkel [Authorize] uten argumenter bruker standardpolicyen, som som standard bare krever en autentisert bruker. De kan erstatte den.

options.DefaultPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .RequireClaim("email_verified", "true")
    .Build();

Fallback-policyen

Fallback-policyen gjelder for endepunkter som ikke har noe autorisasjonsattributt i det hele tatt – en effektiv måte å sikre alt som standard.

options.FallbackPolicy = new AuthorizationPolicyBuilder()
    .RequireAuthenticatedUser()
    .Build();
// Now every endpoint requires auth unless marked [AllowAnonymous]

Velge bort med AllowAnonymous

Når en fallback-policy låser ned alt, kan De bruke [AllowAnonymous] til å eksponere offentlige endepunkter, for eksempel innlogging eller helsesjekker.

[AllowAnonymous]
[HttpGet("health")]
public IActionResult Health() => Ok("healthy");

Bruke policyer på endepunkter

Referer til en policy med navn i attributter eller Minimal API-utvidelser.

// Controller
[Authorize(Policy = "SeniorEditor")]
public IActionResult Publish() => Ok();

// Minimal API
app.MapPost("/publish", () => Results.Ok())
   .RequireAuthorization("SeniorEditor");

Gruppere endepunkter

Bruk en policy på en hel rutegruppe, slik at alle endepunkter i gruppen arver den.

var admin = app.MapGroup("/admin")
               .RequireAuthorization("CanManageOrders");

admin.MapGet("/stats", () => Results.Ok());
admin.MapDelete("/{id}", (int id) => Results.NoContent());

Kravene under panseret

Hvert kall til Require* legger til en IAuthorizationRequirement i policyen. En samsvarende handler evaluerer hvert krav. For innebygde krav skjer dette automatisk; egendefinerte regler trenger en egendefinert handler (neste leksjon).

// RequireRole("admin") adds a RolesAuthorizationRequirement
// RequireClaim(...) adds a ClaimsAuthorizationRequirement

Hvor bør policyer defineres

Samle alle policydefinisjoner i én utvidelsesmetode, slik at de er lette å finne og teste.

public static IServiceCollection AddAppPolicies(
    this IServiceCollection services)
{
    services.AddAuthorization(o =>
    {
        o.AddPolicy("SignedIn", p => p.RequireAuthenticatedUser());
        o.AddPolicy("CanManageOrders", p => p.RequireRole("admin"));
    });
    return services;
}

Kunnskapssjekk

Test forståelsen Deres av standardpolicyer kontra fallback-policyer.

Oppsummering

De har lært om policy-basert autorisasjon:

  • AddPolicy definerer navngitte, gjenbrukbare regler.
  • RequireAuthenticatedUser, RequireRole og RequireClaim kombineres med OG-semantikk.
  • DefaultPolicy brukes av enkel [Authorize]; FallbackPolicy sikrer endepunkter uten eksplisitt merking.
  • [AllowAnonymous] velger bort autorisasjon.

Neste: egendefinerte autorisasjonskrav og handlere.

Gratis å komme i gang

Lær deg C# med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
93
Leksjoner
346

Ofte stilte spørsmål

Er leksjonen «Policybasert autorisasjon» gratis?

Ja – hele teksten i «Policybasert autorisasjon» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av C# Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i C# Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Policybasert autorisasjon»?

Definer gjenbrukbare autorisasjonspolicyer. Du øver på C# Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med C# Academy?

Ingen tidligere erfaring er nødvendig. C# Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Policybasert autorisasjon»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne C# Academy-leksjonen?

Ja. Alle C# Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Rollebasert autorisasjon
  2. Claims-basert autorisasjon
  3. Policybasert autorisasjon
  4. Egendefinerte autorisasjonskrav
← Tilbake til C# Academy