Rollen und Berechtigungen

Roles

In Keycloak dient eine Rolle als eine Art Label, das wir einem Benutzer oder einer Gruppe von Benutzern zuweisen können, um bestimmte Berechtigungen zu vergeben. Ein Benutzer mit einer bestimmten Rolle kann daraufhin bestimmte Aktionen ausführen oder auf bestimmte Ressourcen zugreifen, je nachdem, wie client-Anwendungen diese Rollen interpretieren.

Realm-Rollen vs. Client-Rollen

Realm-Rollen: Diese Rollen sind auf Realm-Ebene definiert und gelten für den gesamten Realm. Das heißt, wenn Sie eine Realm-Rolle zu einem Benutzer hinzufügen, hat der Benutzer diese Rolle in jeder Anwendung innerhalb dieses Realms. Realm-Rollen sind ideal für Berechtigungen, die über viele Services hinweg gelten sollen. Diese Rollen sind oft allgemeine Rollen, wie z.B. admin, user oder manager.

Client-Rollen: Diese Rollen sind spezifisch für einen bestimmten Client innerhalb eines Realms. Sie würden Client-Rollen verwenden, wenn Sie einer Anwendung spezifische Rollen hinzufügen möchten. Diese Rollen sind nützlich, um Berechtigungen auf Anwendungsebene feiner zu steuern.

Composite-Rollen: Keycloak erlaubt es auch, sogenannte Composite-Rollen zu erstellen. Ein Composite ist im Grunde eine Rolle, die eine Sammlung von anderen Rollen enthält. Dabei ist es möglich, sowohl Realm-Rollen als auch Client-Rollen in einer einzigen Composite-Rolle zu bündeln. Der Hauptvorteil davon ist, dass Sie eine Reihe von Berechtigungen gruppieren können, die zusammen einen bestimmten Zweck oder Kontext erfüllen.

Realm Roles anlegen

  • Im Realm olymp
    • Ream roles → Create role
      • admin
    • Ream roles → Create role
      • user

Create Realm Role

Create Realm Role

Client Roles anlegen

  • Clients → athen → Tab Roles → Create role
    • client_admin
  • Clients → athen → Tab Roles → Create role
    • client_user
Create Client Role

Create Client Role

Werbung/Advertising

ADCELL brillen.de Partner Softwarehunter.de it-versand Aromatico

Composite-Roles anlegen

  • Realm roles → admin → Associated roles → Action → Add associated Roles → Filter by clients
    • Auswählen
      (athen) client_admin
      (athen) client_user

      • Assign
1. Add associated roles
Create Composite Role - Part 1

Create Composite Role – Part 1

2. Filter by clients
Create Composite Role - Part 2

Create Composite Role – Part 2

3. Assign roles to admin
Create Composite Role - Part 3

Create Composite Role – Part 3

Werbung/Advertising

ADCELL Aromatico Partner it-versand Softwarehunter.de brillen.de

Eine weitere Composite-Role

  • Realm roles → user → Associated roles → Action → Add associated Roles → Filter by clients
    • Auswählen
      (athen) client_user

      • Assign

Die Wirkung der Zuordnung einer zusammengesetzten Rolle

Das Zuweisen einer zusammengesetzten Rolle wie ‚admin‘ zu einem Benutzer hat den Vorteil, dass dieser Benutzer nun alle Berechtigungen erbt, die mit den einzelnen Rollen verbunden sind, aus denen die zusammengesetzte Rolle besteht. Im Fall von ‚zeus‘ bedeutet dies:

  • Durch die Realm-Rolle ‚admin‘ erhält der Benutzer administrative Privilegien auf der Ebene des Realms.
  • Mit der Client-Rolle ‚Role client_admin‘ bekommt ‚zeus‘ administrative Rechte für den Client ‚athen‘.
  • Die Client-Rolle ‚Role client_user‘ gewährt ‚zeus‘ zusätzliche benutzerspezifische Rechte für denselben Client.

Das macht die Verwaltung von Berechtigungen viel effizienter und übersichtlicher. Statt mehrere einzelne Rollen zu verwalten, können Sie einfach eine zusammengesetzte Rolle erstellen und diese einem Benutzer zuweisen. Die zusammengesetzte Rolle dient quasi als eine Art „Rechte-Bündel“, das einfach verteilt und verwaltet werden kann.

Nun wissen wir, wie Realms, User und Rollen angelegt werden und wie man eine oder mehrere Rollen einem User zuordnet. Jetzt ist ein guter Zeitpunkt, um das einmal auszuprobieren:

  • Erstellen Sie einen User hercules im Realm olymp
  • Erstellen Sie ein Passwort für den User hercules
  • Weisen Sie dem neuen User die Realm- (composite) Role user zu

Sie können natürlich beliebig andere User hinzufügen. In den hier gezeigten Beispielen ist der Einfachheit halber der Username immer identisch mit dem Passwort.

Ausblick

Demnächst steht die Konfiguration des Realms olymp sowie eine Spring-Demo-Anwendung zum Authorization-Code-Flow auf GitHub zur Verfügung.