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 ClaimsAuthorizationRequirementWo 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:
AddPolicydefiniert benannte, wiederverwendbare Regeln.RequireAuthenticatedUser,RequireRoleundRequireClaimwerden 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
- Rollenbasierte Autorisierung
- Claims-basierte Autorisierung
- Richtlinienbasierte Autorisierung
- Benutzerdefinierte Autorisierungsanforderungen