0Pricing
C# Academy · Lektion

Rollenbasierte Autorisierung

Beschränken Sie Endpunkte anhand von Benutzerrollen.

Rollenbasierte Autorisierung ist eine kostenlose C# Academy-Lektion auf CoddyKit. Dies ist Lektion 1 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.

Authentifizierung im Vergleich zur Autorisierung

Authentifizierung beantwortet die Frage „Wer sind Sie?“. Autorisierung beantwortet die Frage „Was dürfen Sie tun?“.

Das einfachste Autorisierungsmodell in ASP.NET Core ist rollenbasiert: Ein Benutzer gehört zu Rollen, und für Endpunkte sind bestimmte Rollen erforderlich.

// User has roles: admin, editor
// Endpoint requires: admin

Woher Rollen stammen

Eine Rolle ist lediglich ein Claim des Typs ClaimTypes.Role. Fügen Sie beim Ausstellen eines JWT für jede Rolle des Benutzers einen Rollen-Claim hinzu.

var claims = new List<Claim>
{
    new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()),
    new Claim(ClaimTypes.Role, "admin"),
    new Claim(ClaimTypes.Role, "editor")
};

Der Rollen-Claim-Typ

Damit [Authorize(Roles=...)] und User.IsInRole funktionieren, muss der Handler wissen, welcher Claim-Typ eine Rolle repräsentiert.

Der JWT-Schlüssel role wird standardmäßig ClaimTypes.Role zugeordnet. Wenn Sie einen benutzerdefinierten Schlüssel verwenden, teilen Sie dies dem Validator über RoleClaimType mit.

options.TokenValidationParameters = new TokenValidationParameters
{
    RoleClaimType = ClaimTypes.Role
};

Eine einzelne Rolle voraussetzen

Wenden Sie [Authorize(Roles = "admin")] auf einen Controller oder eine Aktion an. Nur Benutzer mit der Rolle admin dürfen darauf zugreifen.

[Authorize(Roles = "admin")]
[HttpDelete("users/{id}")]
public IActionResult DeleteUser(int id)
{
    // only admins reach here
    return NoContent();
}

Eine beliebige von mehreren Rollen voraussetzen

Eine durch Kommas getrennte Liste bedeutet ODER: Der Benutzer benötigt mindestens eine der aufgeführten Rollen.

[Authorize(Roles = "admin,editor")]
[HttpPut("articles/{id}")]
public IActionResult Update(int id) => Ok();
// admins OR editors are allowed

Mehrere Rollen voraussetzen (UND)

Um alle von mehreren Rollen vorauszusetzen, kombinieren Sie mehrere [Authorize]-Attribute. Jedes einzelne muss erfolgreich sein.

[Authorize(Roles = "employee")]
[Authorize(Roles = "manager")]
public IActionResult ApproveBudget() => Ok();
// must be BOTH employee AND manager

Rollen im Code prüfen

Manchmal benötigen Sie eine Rollenprüfung innerhalb des Methodenrumpfs und nicht nur an der Eingangstür. Verwenden Sie User.IsInRole.

public IActionResult GetReport()
{
    var data = BuildReport();
    if (User.IsInRole("admin"))
        data.IncludeSensitiveColumns();
    return Ok(data);
}

Entsprechung für Minimal APIs

Minimal APIs verwenden .RequireAuthorization mit einer Inline-Policy. Einfacher ist es jedoch, eine Rolle über eine benannte Policy zu verlangen.

app.MapDelete("/users/{id}", (int id) => Results.NoContent())
   .RequireAuthorization(p => p.RequireRole("admin"));

Rollen in einer Hierarchie

ASP.NET Core verfügt über keine integrierte Rollenhierarchie. Wenn Administratoren implizit auch Editorrechte haben sollen, gewähren Sie entweder beide Rollen-Claims bei der Anmeldung oder bilden Sie dies mit Policies ab (im nächsten Kurs).

// Grant both at login if admin >= editor
new Claim(ClaimTypes.Role, "admin");
new Claim(ClaimTypes.Role, "editor");

Wenn Rollen nicht ausreichen

Rollen sind grobgranular. Wenn Regeln von Daten abhängen (z. B. „nur der Eigentümer darf bearbeiten“) oder feingranulare Berechtigungen erforderlich sind, werden Rollenprüfungen schnell unübersichtlich.

Hier kommen Claims-basierte und Policy-basierte Autorisierung ins Spiel.

// Hard to express with roles alone:
// "editors, but only for their own department"

403 vs. 401 zurückgeben

Wenn der Benutzer nicht authentifiziert ist, liefert eine Rollenprüfung 401 Unauthorized. Ist der Benutzer authentifiziert, verfügt aber nicht über die erforderliche Rolle, erhält er 403 Forbidden.

// No/invalid token         -> 401 Unauthorized
// Valid token, wrong role   -> 403 Forbidden

Kurze Überprüfung

Testen Sie Ihr Wissen über Rollen.

Zusammenfassung

Sie haben die rollenbasierte Autorisierung kennengelernt:

  • Rollen sind ClaimTypes.Role-Claims, die im Token enthalten sind.
  • [Authorize(Roles = "a,b")] bedeutet ODER; mehrere Attribute bedeuten UND.
  • User.IsInRole prüft Rollen im Code.
  • Rollen sind grobgranular – datenabhängige Regeln benötigen umfassendere Modelle.

Als Nächstes: Claims-basierte Autorisierung.

Häufig gestellte Fragen

Ist die Lektion „Rollenbasierte Autorisierung“ kostenlos?

Ja — der vollständige Text von „Rollenbasierte 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 „Rollenbasierte Autorisierung“?

Beschränken Sie Endpunkte anhand von Benutzerrollen. 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 1 von 4.

Wie lange dauert die Lektion „Rollenbasierte 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