This is an old revision of the document!
Table of Contents
CCCHH ID
- service-urls:
- https://id.hamburg.ccc.de/, https://keycloak-admin.hamburg.ccc.de/
- host-fqdn:
- keycloak.hamburg.ccc.de
- server:
- Chaosknoten
- maintainer:
- 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 IRC- bzw. Matrix-Channel.
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:
Service | Service-URLs | Host-FQND | Server |
---|---|---|---|
Cloud | https://cloud.hamburg.ccc.de/ | cloud-intern.hamburg.ccc.de | Chaosknoten |
DokuWiki | https://wiki.hamburg.ccc.de | wiki-intern.hamburg.ccc.de | Chaosknoten |
eh22-wiki | http://eh22.easterhegg.eu | eh22-wiki-intern.hamburg.ccc.de | Chaosknoten |
Git | https://git.hamburg.ccc.de/ | git.hamburg.ccc.de | Chaosknoten |
Grafana | https://grafana.hamburg.ccc.de | grafana-intern.hamburg.ccc.de | Chaosknoten |
Pad | https://pad.hamburg.ccc.de | pad-intern.hamburg.ccc.de | Chaosknoten |
invite | https://invite.hamburg.ccc.de | @@Host-FQDN@|@ | Chaosknoten |
CCCHH ID | https://id.hamburg.ccc.de/, https://keycloak-admin.hamburg.ccc.de/ | keycloak.hamburg.ccc.de | Chaosknoten |
Proxmox-Backup-Server | https://proxmox-backup-server.ccchh.net:8007/ | proxmox-backup-server.z9.ccchh.net | ThinkCCCluster |
zammad | https://zammad.hamburg.ccc.de | zammad-intern | Chaosknoten |
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
- Auf https://keycloak-admin.hamburg.ccc.de/admin/ccchh/console/#/ccchh/users aus dem Club-Netz anmelden
- Add user
- Required user actions: Update Password, Verify Email
- Ggf. zur “intern”-Gruppe hinzufügen
- Unter “User Details” auf “Credentials” einen Credential Reset auslösen
- Reset Actions: Update Password, Verify Email
- Expires In: 2 days