Claims-basierte Autorisierung
Autorisieren Sie anhand von Benutzer-Claims.
Claims-basierte Autorisierung ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 2 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.
Über Rollen hinaus
Rollen sind ein Sonderfall von Claims. Die Claims-basierte Autorisierung prüft beliebige Claims – etwa E-Mail-Adresse, Abteilung, Abonnementstufe oder ein Berechtigungs-Flag – und nicht nur Rollen.
Dadurch erhalten Sie eine feinere Kontrolle, ohne Dutzende von Rollen erfinden zu müssen.
// Claims a user might carry:
// department = sales
// subscription = pro
// email_verified = trueClaims zu einem Token hinzufügen
Stellen Sie alle Claims aus, die Ihre Autorisierungsregeln prüfen sollen. Ein Claim ist ein Typ-Wert-Paar.
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")
};Eine Claims-Policy definieren
Claims-basierte Regeln werden als benannte Policies ausgedrückt, die mit AddAuthorization registriert werden. RequireClaim verlangt, dass der Benutzer über einen bestimmten Claim verfügt.
builder.Services.AddAuthorization(options =>
{
options.AddPolicy("VerifiedEmail", policy =>
policy.RequireClaim("email_verified", "true"));
});RequireClaim ohne Wert
Wenn Sie nur darauf achten, dass der Claim vorhanden ist (unabhängig von seinem Wert), rufen Sie RequireClaim nur mit dem Typ auf.
options.AddPolicy("HasDepartment", policy =>
policy.RequireClaim("department"));RequireClaim mit zulässigen Werten
Sie können zulässige Werte angeben. Die Policy ist erfüllt, wenn der Claim mit einem beliebigen dieser Werte übereinstimmt.
options.AddPolicy("PaidTier", policy =>
policy.RequireClaim("subscription", "pro", "enterprise"));Eine Claims-Policy anwenden
Verweisen Sie in [Authorize] anhand ihres Namens auf die Policy.
[Authorize(Policy = "PaidTier")]
[HttpGet("premium-reports")]
public IActionResult Reports() => Ok();Verwendung mit Minimal APIs
Minimal APIs verweisen über RequireAuthorization auf denselben Policy-Namen.
app.MapGet("/premium-reports", () => Results.Ok())
.RequireAuthorization("PaidTier");Mehrere Claim-Anforderungen kombinieren
Eine Policy kann mehrere Aufrufe von RequireClaim verketten. Alle müssen erfüllt sein (UND).
options.AddPolicy("VerifiedSales", policy =>
policy
.RequireClaim("email_verified", "true")
.RequireClaim("department", "sales"));RequireAssertion für benutzerdefinierte Logik
Wenn die Prüfung eines festen Werts nicht ausreicht, führt RequireAssertion ein beliebiges Prädikat für den ClaimsPrincipal aus.
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);
}));Claims zur Laufzeit auslesen
Innerhalb einer Aktion können Sie Claims weiterhin direkt untersuchen, wenn Sie den Wert und nicht nur eine Ja/Nein-Schranke benötigen.
var dept = User.FindFirst("department")?.Value;
var isPro = User.HasClaim("subscription", "pro");Claims oder Rollen – wann verwendet man was
Verwenden Sie Rollen für übergeordnete Aufgabenbereiche. Verwenden Sie Claims für Attribute und Feature-Flags. Sie lassen sich kombinieren: Eine Policy kann gleichzeitig eine Rolle und mehrere Claims verlangen.
options.AddPolicy("SalesManager", policy =>
policy.RequireRole("manager")
.RequireClaim("department", "sales"));Kurze Überprüfung
Überprüfen Sie Ihr Verständnis von Claims-Policies.
Zusammenfassung
Sie haben die Claims-basierte Autorisierung kennengelernt:
- Jeder Claim – nicht nur Rollen – kann den Zugriff steuern.
RequireClaimprüft das Vorhandensein oder bestimmte zulässige Werte.RequireAssertionverarbeitet benutzerdefinierte Prädikatlogik.- Claims und Rollen lassen sich innerhalb einer einzigen benannten Policy kombinieren.
Als Nächstes: das vollständige Policy-basierte Modell.
Häufig gestellte Fragen
Ist die Lektion „Claims-basierte Autorisierung“ kostenlos?
Ja — der vollständige Text von „Claims-basierte 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 „Claims-basierte Autorisierung“?
Autorisieren Sie anhand von Benutzer-Claims. 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 2 von 4.
Wie lange dauert die Lektion „Claims-basierte 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