0Pricing
C# Academy · Lektion

Richtlinienbasierte Autorisierung

Definieren Sie wiederverwendbare Autorisierungsrichtlinien.

Richtlinienbasierte Autorisierung ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C# Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Das Policy-Modell

In ASP.NET Core läuft jede Autorisierungsprüfung letztlich über eine Policy. Rollen- und Claims-Attribute sind Kurzformen, die im Hintergrund Policies erstellen.

Wenn Sie benannte Policies definieren, zentralisieren Sie Ihre Regeln und halten Ihre Controller übersichtlich.

[Authorize(Policy = "CanManageOrders")]

AddAuthorization

Registrieren Sie Policies mit AddAuthorization im Servicecontainer. Jede Policy erhält einen eindeutigen Namen.

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

RequireAuthenticatedUser

Die grundlegendste Anforderung besteht einfach darin, dass der Benutzer angemeldet ist. RequireAuthenticatedUser weist anonyme Aufrufer zurück.

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

Anforderungen kombinieren

Ein Policy-Builder verkettet mehrere Anforderungen. Die Policy ist nur dann erfolgreich, wenn alle erfüllt sind.

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

Die Standard-Policy

Ein [Authorize]-Attribut ohne Argumente verwendet die Standard-Policy, die standardmäßig lediglich einen authentifizierten Benutzer verlangt. Sie können sie ersetzen.

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

Die Fallback-Policy

Die Fallback-Policy gilt für Endpunkte, die überhaupt kein Autorisierungsattribut besitzen – eine wirkungsvolle Möglichkeit, standardmäßig für Sicherheit zu sorgen.

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

Mit AllowAnonymous auf Autorisierung verzichten

Wenn eine Fallback-Policy alles absichert, verwenden Sie [AllowAnonymous], um öffentliche Endpunkte wie die Anmeldung oder Zustandsprüfungen freizugeben.

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

Policies auf Endpunkte anwenden

Verweisen Sie in Attributen oder Minimal-API-Erweiterungen anhand des Namens auf eine Policy.

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

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

Endpunkte gruppieren

Wenden Sie eine Policy auf eine gesamte Routengruppe an, damit jeder darin enthaltene Endpunkt sie erbt.

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

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

Anforderungen unter der Haube

Jeder Aufruf von Require* fügt der Policy eine IAuthorizationRequirement hinzu. Ein passender Handler wertet jede Anforderung aus. Bei integrierten Anforderungen geschieht dies automatisch; benutzerdefinierte Regeln benötigen einen benutzerdefinierten Handler (in der nächsten Lektion).

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

Wo Policies definiert werden sollten

Halten Sie alle Policy-Definitionen in einer einzigen Erweiterungsmethode, damit sie leicht auffindbar und testbar sind.

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

Kurze Überprüfung

Testen Sie Ihr Verständnis von Standard- und Fallback-Policies.

Zusammenfassung

Sie haben die Policy-basierte Autorisierung kennengelernt:

  • AddPolicy definiert benannte, wiederverwendbare Regeln.
  • RequireAuthenticatedUser, RequireRole und RequireClaim werden mit UND-Semantik kombiniert.
  • DefaultPolicy bildet die Grundlage für ein einfaches [Authorize]; FallbackPolicy sichert nicht gekennzeichnete Endpunkte ab.
  • [AllowAnonymous] nimmt einen Endpunkt davon aus.

Als Nächstes: benutzerdefinierte Autorisierungsanforderungen und -Handler.

Häufig gestellte Fragen

Ist die Lektion „Richtlinienbasierte Autorisierung“ kostenlos?

Ja — der vollständige Text von „Richtlinienbasierte Autorisierung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C# Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C# Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Richtlinienbasierte Autorisierung“?

Definieren Sie wiederverwendbare Autorisierungsrichtlinien. Du übst C# Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C# Academy zu starten?

Keine Vorkenntnisse erforderlich. C# Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Richtlinienbasierte Autorisierung“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C# Academy-Lektion Code schreiben und ausführen?

Ja. Jede C# Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Rollenbasierte Autorisierung
  2. Claims-basierte Autorisierung
  3. Richtlinienbasierte Autorisierung
  4. Benutzerdefinierte Autorisierungsanforderungen
← Zurück zu C# Academy