# 🆕 Authentik: Neuen Invitation Flow erstellen **Problem**: - Nur ein `matrix-enrollment` Flow existiert - Wird fĂŒr Standard-Signup + Invitations verwendet → Konflikt - Fehler: "Found existing plan for other flow, deleting plan" **Lösung**: Separaten `matrix-invitation` Flow fĂŒr Einladungslinks erstellen. --- ## Schritt 1: Authentik Admin UI öffnen ```bash kubectl port-forward -n authentik svc/authentik 9000:9000 # Browser: http://localhost:9000/ # Admin: akadmin / (password) ``` --- ## Schritt 2: Neuen Flow erstellen **Navigation**: Admin → Flows & Stages → Flows 1. Klick **"Create"** (oben rechts) 2. FĂŒlle folgendes aus: ``` Name: matrix-invitation Slug: matrix-invitation Title: Matrix Enrollment via Invitation Description: Enrollment flow for users created via invitation links Designation: enrollment ``` 3. **Speichern** (Save) --- ## Schritt 3: Stages zur Invitation Flow hinzufĂŒgen Nach dem Erstellen wirst du auf die Flow-Edit-Seite weitergeleitet. **Navigation**: Admin → Flows & Stages → Flows → `matrix-invitation` → Edit Klick auf "Add Stage" und folge dieser Reihenfolge: ### Stage 1: Invite Stage (Invitation verarbeiten) 1. Klick **"Add Stage"** 2. WĂ€hle: **"Invite Stage"** 3. Konfiguriere: ``` Name: Invite Order: 1 ``` 4. **Save** Dann musst du das Binding setzen: - Klick auf die Stage in der Flow - Binding: **"Invite"** (oder "Invitation") - Required: **Yes** - **Save** ### Stage 2: Identification Stage (Username ĂŒberprĂŒfen) 1. Klick **"Add Stage"** 2. WĂ€hle: **"Identification Stage"** (nicht "Authenticate Stage") 3. Konfiguriere: ``` Name: Identification Order: 2 User Fields: username (oder email) Create Users as Inactive: NO ``` 4. **Save** Binding setzen: - Binding: **"Identify"** - Required: **No** - **Save** ### Stage 3: Prompt Stage (Daten abfragen: Username, Email, Name) 1. Klick **"Add Stage"** 2. WĂ€hle: **"Prompt Stage"** 3. Konfiguriere: ``` Name: User Data Order: 3 ``` 4. **Speichern (Save)** Dann **Fields hinzufĂŒgen**: - Klick auf die Stage - Klick **"Add Field"** fĂŒr jedes Feld: #### Field 1: Username ``` Field Name: username Label: Username Type: text Required: Yes Placeholder: Choose a username ``` #### Field 2: Email ``` Field Name: email Label: Email Address Type: email Required: Yes Placeholder: your@email.com ``` #### Field 3: Name (Optional) ``` Field Name: name Label: Full Name Type: text Required: No Placeholder: Your Name ``` Alle Fields **Save**. Dann **Stage-Binding setzen**: - Binding: **"Prompt for data"** (oder "User Data") - Required: **Yes** - **Save** ### Stage 4: Write Stage (User in DB erstellen) 1. Klick **"Add Stage"** 2. WĂ€hle: **"Write Stage"** (oder "User Write Stage") 3. Konfiguriere: ``` Name: Create User Order: 4 ``` 4. **Speichern (Save)** Dann **Field Bindings setzen**: - Klick auf die Stage - Unter "Field Bindings" oder "User Creation": - `username` ← mapped von username Feld - `email` ← mapped von email Feld - `name` ← mapped von name Feld - **Save** Stage-Binding setzen: - Binding: **"Create or update user"** - Required: **Yes** - **Save** ### Stage 5: Finish Stage (Abschluss) 1. Klick **"Add Stage"** 2. WĂ€hle: **"Finish Stage"** (oder "User Login") 3. Konfiguriere: ``` Name: Finish Order: 5 ``` 4. **Speichern (Save)** Stage-Binding: - Binding: **"Finish"** (oder "Complete enrollment") - Required: **Yes** - **Save** --- ## Schritt 4: Flow als Standard-Invitation setzen **Navigation**: Admin → System → Settings Suche nach "Invitation Flow" oder "Default Flows": 1. Setze **"Invitation Flow"** auf `matrix-invitation` 2. **Save** Alternativ: - Admin → Flows & Stages → Flows - FĂŒr jede Invitation/Group: - Klick auf Group/Invitation - Setze "Enrollment Flow" auf `matrix-invitation` --- ## Schritt 5: Test mit neuem Einladungslink 1. **Neuen Einladungslink erstellen**: - Admin → Users & Groups → Invitations - Klick **"Create"** - Expiry: 7 days - **Create & Copy Link** 2. **Link öffnen** (neuer Browser/Inkognito): - Link in Browser öffnen - Sollte jetzt alle Felder zeigen: - [ ] Username eingeben - [ ] Email eingeben ← sollte jetzt da sein! - [ ] Name eingeben (optional) - [ ] "Weiter" oder "Sign in with Authentik" 3. **Authentik Login** (falls Binding korrekt): - Mit Authentik anmelden - Enrollment abgeschlossen - User sollte in Synapse erstellt sein --- ## Troubleshooting ### Fehler: "Stage not found" - Stelle sicher, dass alle Stages ein **Binding** haben - Alle Bindings mĂŒssen **eindeutig** sein (nicht doppelt) - **Save** nach jeder Änderung ### Felder werden nicht angezeigt - Prompt Stage ĂŒberprĂŒfen - Alle Fields mĂŒssen **Save** sein - Ggfs. Browser-Cache löschen ### Fehler nach Enrollment - MAS Logs: `kubectl logs -f matrix-stack-matrix-authentication-service-6b994b9fcf-qqcxz -n matrix` - Authentik Logs: `kubectl logs -f -n authentik -l app.kubernetes.io/name=authentik` --- ## Erwartetes Ergebnis Nach dem Fix: 1. Einladungslink öffnen → `matrix-invitation` Flow 2. Username, Email, Name eingeben 3. "Mit Authentik anmelden" 4. Nach Login: User in Synapse erstellt 5. Login zu ElementWeb möglich --- ## Checkliste - [ ] `matrix-invitation` Flow erstellt - [ ] 5 Stages in korrekter Reihenfolge (Invite → Identify → Prompt → Write → Finish) - [ ] Prompt Stage hat username, email, name Felder - [ ] Alle Stages haben korrektes Binding - [ ] `matrix-invitation` als Standard-Invitation-Flow gesetzt - [ ] Neuen Einladungslink erstellt und getestet - [ ] Test-User kann Email eingeben - [ ] Test-User in Synapse DB nach Login --- **Sollte ca. 10-15 Minuten dauern!** 🚀