0Pricing
C# Academy · Lektion

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

Claims 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.
  • RequireClaim prüft das Vorhandensein oder bestimmte zulässige Werte.
  • RequireAssertion verarbeitet 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

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