Zitadel Rollen-Konfiguration für Workmate OS
Übersicht
Workmate OS unterstützt automatisches Rollen-Mapping von Zitadel. Wenn ein User sich per SSO einloggt, wird seine Rolle automatisch aus Zitadel übernommen.
Verfügbare Rollen in Workmate OS
| Workmate Rolle | Beschreibung | Priorität |
|---|---|---|
| Admin | Voller System-Zugriff | 1 (höchste) |
| CEO | Chief Executive Officer | 2 |
| Manager | Abteilungsleiter | 3 |
| Employee | Standard-Mitarbeiter | 4 (Standard) |
Schritt 1: Project in Zitadel erstellen (falls noch nicht vorhanden)
- Gehe zu Zitadel Console → K.I.T. Organization
- Klicke auf Projects im Menü
- Falls noch kein Project existiert:
- Klicke auf New Project
- Name:
Workmate OS - Save
Schritt 2: Rollen im Project definieren
- Öffne dein Workmate OS Project
- Gehe zu Roles
- Füge folgende Rollen hinzu:
Rollen erstellen:
Klicke auf New Role und erstelle:
| Role Key | Display Name | Description |
|---|---|---|
workmate-admin |
Workmate Admin | Full system administrator |
workmate-ceo |
Workmate CEO | Chief Executive Officer |
workmate-manager |
Workmate Manager | Department Manager |
workmate-employee |
Workmate Employee | Standard Employee |
Wichtig: Die Role Keys müssen exakt so geschrieben werden (kleinbuchstaben mit Bindestrich).
Schritt 3: Application mit Project verknüpfen
- Gehe zu deiner Application (Client ID:
353229597984227349) - Stelle sicher, dass sie mit dem Workmate OS Project verknüpft ist
- Falls nicht:
- Gehe zu Applications → Deine App
- Assign to Project: Wähle “Workmate OS”
Schritt 4: Rollen-Claims in Token aktivieren
- Gehe zu deine Application → Token Settings (oder OIDC Configuration)
- Aktiviere:
- ✅ Add project roles to access token
- ✅ Add project roles to ID token
- Save
Schritt 5: Rollen zu Usern zuweisen
Einem User Rollen zuweisen:
- Gehe zu Users in der K.I.T. Organization
- Wähle den User aus (z.B. joshua@kit-it-koblenz.de)
- Klicke auf Authorizations oder Project Grants
- Klicke New Authorization
- Wähle:
- Project: Workmate OS
- Roles: Wähle eine oder mehrere Rollen (z.B.
workmate-admin)
- Save
Hinweis: Wenn ein User mehrere Rollen hat, wird automatisch die höchste Priorität verwendet:
- Admin > CEO > Manager > Employee
Schritt 6: Testen
- Logge dich aus Workmate OS aus
- Klicke auf Mit SSO anmelden
- Logge dich mit deinem Zitadel-Account ein
- Prüfe nach dem Login deine Rolle:
- Gehe zu Profil oder
- Prüfe in der Datenbank:
SELECT email, role_id FROM employees WHERE email = 'deine@email.de';
Rollen-Mapping anpassen
Falls du andere Rollennamen in Zitadel verwenden möchtest, kannst du das Mapping anpassen:
Datei: /backend/app/core/auth/role_mapping.py
1
2
3
4
5
6
ZITADEL_ROLE_MAPPING = {
# Deine eigenen Mapping-Regeln
"my-custom-admin": "Admin",
"my-custom-employee": "Employee",
# ...
}
Standard-Rolle
Wenn ein User keine Rolle in Zitadel hat, wird automatisch die Rolle Employee zugewiesen.
Du kannst die Standard-Rolle ändern in:
Datei: /backend/app/core/auth/role_mapping.py
1
DEFAULT_ROLE = "Employee" # Ändere zu "Manager" oder einer anderen Rolle
Troubleshooting
Rolle wird nicht übernommen
- Prüfe Backend-Logs:
1
docker logs workmate_backend --tail 50 | grep "Zitadel roles"
- Prüfe ob Rollen im Token sind:
- Die Logs zeigen:
[DEBUG get_or_create_user] Zitadel roles: [...] - Falls leer: Rollen-Claims sind nicht im Token aktiviert
- Die Logs zeigen:
- Prüfe Rollen-Mapping:
- Logs zeigen:
[DEBUG get_or_create_user] Mapped to Workmate role: Admin - Falls
None: Rolle nicht im Mapping definiert
- Logs zeigen:
User hat falsche Rolle
- Logge dich aus und wieder ein (Rollen werden bei jedem Login aktualisiert)
- Prüfe in Zitadel, welche Rollen dem User zugewiesen sind
- Prüfe ob das Mapping korrekt ist
Beispiel: Token mit Rollen
So sieht ein Zitadel Token mit Rollen aus:
1
2
3
4
5
6
7
8
9
{
"iss": "https://auth.intern.phudevelopement.xyz",
"sub": "353230006945579029",
"email": "joshua@kit-it-koblenz.de",
"urn:zitadel:iam:org:project:roles": {
"workmate-admin": "353229597984227349",
"workmate-manager": "353229597984227349"
}
}
In diesem Fall wird der User die Rolle Admin bekommen (höchste Priorität).