User Tools

Site Tools


infrastructure:services:keycloak

CCCHH ID

service-urls:
https://id.hamburg.ccc.de/, https://keycloak-admin.hamburg.ccc.de/
host-fqdn:
keycloak.hamburg.ccc.de
server:
Chaosknoten
maintainer:
june, Infra-Team
ccchh-id-integration:
true

Beschreibung

CCCHH ID ist unser SSO- und Account-System. Es ist realisiert durch eine Keycloak-Instanz. So können wir jeder interessierten Person einen Account bieten, mit welchem diese dann je nach Rechtelevel all die verschiedenen Club-Services nutzen kann.

Nutzeraccounts

Um einen Nutzeraccount zu bekommen, meldet euch bitte einfach im CCCHH Matrix-Channel (siehe Matrix-Chatraum und Space) oder fragt vor Ort, ob ein Wesen euch mit einem Wesen des Infra-Teams in Kontakt bringen kann.

Der eigene Account kann dann unter folgender URL verwaltet werden: https://id.hamburg.ccc.de/realms/ccchh/account/

Angebundene Services

Zur Zeit sind folgende Services angebunden:

Weitere angebundene Services:

  • ThinkCCCluster (Gruppen werden aber nicht aus dem Keycloak übernommen, sondern müssen im PVE manuell zugewiesen werden. :-()
  • Chaosknoten (gleiches Gruppen-Problem wie beim ThinkCCCluster)

Folgenden Services sollen noch angebunden werden:

Konfiguration

Die einzelnen an Keycloak angebundenen Anwendungen heißen “clients”, die Nutzeraccounts sind “user”. Alle Nutzeraccounts für die Club-Services liegen im “ccchh” realm.

Da die verschiedenen Services (clients) unterschiedliche Rollen-/ Gruppen-Namen für dieselben Funktionalitäten verwenden könne, sollten für jeden Client unter “Clients → $client → Roles” eingerichtet werden. Im Keycloak können dann Real-weite Gruppen angelegt werden, die eine Reihe von Client-Roles enthalten.

Support für 2FA via WebAuthn wurde über einen selbst erstellten Authentication Flow namens “webauthn browser” realisiert. Dieser ist eine angepasste Kopie des built-in browser flow mit WebAuthn Support. Hierzu wurde diese Doku zu Rate gezogen.

Keycloak-Konfiguration kann entweder über den Admin-User selbst vorgenommen werden unter folgender URL: https://keycloak-admin.hamburg.ccc.de/admin/master/console/

Oder auch mit limitierten Rechten durch den eigenen Nutzer-Account unter folgender URL: https://keycloak-admin.hamburg.ccc.de/admin/ccchh/console/

DokuWiki

Damit die Gruppen korrekt ins Dokuwiki übertragen werden, muss in den Keycloak Client-Settings unter “Client Scopes” → “$client-dedicated” ein neuer Mapper angelegt werden:

  • Add Mapper: By Configuration: “User Client Role”
    • Name: wiki-groups
    • Client ID: Select the wiki client
    • Multivalued: On
    • Token Claim Name: groups
    • Claim JSON Type: String
    • Add to ID token: yes
    • Add to access token: yes
    • Add to userinfo: yes

In Dokuwiki muss noch die Option “plugin»oauth»overwrite-groups” aktiviert werden, damit Dokuwiki-Gruppen auch wieder entfernt werden.

Außerdem ist wichtig, dass Keycloak allen Usern die “user”-Gruppe vom Dokuwiki zuweist.

RBAC

Für alle nicht-Keycloak-internen Clients haben wir nun auch Role Based Access Control. Das heißt wir haben für jeden Client eine client-allow und client-deny role, sowie einen entsprechenden Authentication Flow, welcher nach dem default login check auch überprüft, ob der User auch die client-allow und client-deny role hat. Sollte der User die client-allow role nicht besitzen, wird access denied. Sollte der User die client-deny role besitzen, wird auch access denied.

RBAC einrichten

Erstelle die client-allow und client-deny roles bei dem entsprechenden Client. Dupliziere dann einen webauthn browser client auth flow (z.B.: webauthn browser cloud auth). Hier solltest du dann folgende Schritte durchführen:

  • Passe Name und Description an
  • Passe login sub-flow Namen an
  • Passe forms sub-flow Namen an
  • Passe Browser - Conditional OTP sub-flow Namen an
  • Passe rbac allowlist Namen an
  • Passe rbac allow Condition - user role config Namen und role an
  • Passe rbac allow Deny access an
  • Passe rbac denylist Namen an
  • Passe rbac denylist Condition - user role config Namen und role an
  • Passe rbac denylist Deny access an

Admin How-To

Nutzeraccount anlegen

  1. Add user
    • Required user actions: Update Password, Verify Email
    • Ggf. zur “intern”-Gruppe hinzufügen
  2. Unter “User Details” auf “Credentials” einen Credential Reset auslösen
    • Reset Actions: Update Password, Verify Email
    • Expires In: 2 days
infrastructure/services/keycloak.txt · Last modified: 2024-03-08 00:32 UTC by june

Except where otherwise noted, content on this wiki is licensed under the following license: CC0 1.0 Universal
CC0 1.0 Universal Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki