Move all Authentik troubleshooting guides into dedicated subdirectory: - DIAGNOSTIK-AUTHENTIK-FLOW.md - AUTHENTIK-FIX-TEMPLATE.md - AUTHENTIK-INVITATION-FLOW-FIX.md - AUTHENTIK-CREATE-INVITATION-FLOW.md Add README.md with: - Quick reference guide for each document - Scenario-based navigation - Known issues tracking - Tips and best practices This keeps the root directory clean and organizes related guides together. Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
315 lines
8.0 KiB
Markdown
315 lines
8.0 KiB
Markdown
# ✅ Authentik Enrollment Flow – Reparatur-Template
|
||
|
||
Basierend auf häufigen Problemen: Hier sind die wahrscheinlichsten Fixes.
|
||
|
||
---
|
||
|
||
## Problem 1: MAS kennt Authentik-OIDC nicht
|
||
|
||
### Symptom
|
||
- MAS zeigt "Sign in with Authentik" Button nicht
|
||
- Logs: "upstream provider not configured"
|
||
|
||
### Lösung
|
||
|
||
**MAS Secret muss diesen Block enthalten:**
|
||
|
||
```yaml
|
||
# apps/production/custom-configs/mas-secret.yaml (decrypted)
|
||
---
|
||
matrixAuthenticationService:
|
||
upstream_oauth2_config:
|
||
issuer: "https://auth.axion1337.chat/application/o/matrix/"
|
||
client_id: "{{ CLIENT_ID_FROM_AUTHENTIK }}"
|
||
client_secret: "{{ CLIENT_SECRET_FROM_AUTHENTIK }}"
|
||
authorization_endpoint: "https://auth.axion1337.chat/application/o/authorize/"
|
||
token_endpoint: "https://auth.axion1337.chat/application/o/token/"
|
||
userinfo_endpoint: "https://auth.axion1337.chat/application/o/userinfo/"
|
||
scopes:
|
||
- "openid"
|
||
- "profile"
|
||
- "email"
|
||
user_mapping_provider:
|
||
type: "oidc"
|
||
config:
|
||
localpart_template: "{{ user.preferred_username }}"
|
||
display_name_template: "{{ user.name }}"
|
||
email_template: "{{ user.email }}"
|
||
|
||
# Wichtig: Password-Login deaktivieren (da wir nur OIDC verwenden)
|
||
passwords:
|
||
enabled: false
|
||
```
|
||
|
||
**Wie ausfüllen:**
|
||
|
||
1. Authentik Admin UI öffnen: `https://auth.axion1337.chat`
|
||
2. Admin → Applications → Providers → "matrix-provider" (oder ähnlich)
|
||
3. Folgende Werte kopieren:
|
||
- **Client ID**: Im Provider-Details zu sehen
|
||
- **Client Secret**: Im Provider-Details zu sehen (unter "Credentials")
|
||
|
||
4. Local entschlüsseln (mit age-key):
|
||
```bash
|
||
cd gitops/
|
||
sops -d -i apps/production/custom-configs/mas-secret.yaml
|
||
```
|
||
|
||
5. Datei öffnen und die Werte einfügen
|
||
|
||
6. Wieder verschlüsseln:
|
||
```bash
|
||
sops -e -i apps/production/custom-configs/mas-secret.yaml
|
||
```
|
||
|
||
7. Commiten:
|
||
```bash
|
||
git add apps/production/custom-configs/mas-secret.yaml
|
||
git commit -m "Fix: Configure MAS upstream OIDC for Authentik"
|
||
git push
|
||
```
|
||
|
||
8. Flux triggern:
|
||
```bash
|
||
flux reconcile kustomization production-apps --with-source
|
||
```
|
||
|
||
9. Warten, dass MAS Pod neu startet:
|
||
```bash
|
||
kubectl get pods -n matrix -l app=matrix-authentication-service -w
|
||
```
|
||
|
||
---
|
||
|
||
## Problem 2: Authentik Enrollment Flow ist kaputt
|
||
|
||
### Symptom
|
||
- User kommt zu Authentik-Login
|
||
- Nach Login: "Error: Enrollment stage not found" oder ähnlich
|
||
- Oder: Flow bricht ohne Fehlermeldung ab
|
||
|
||
### Lösung
|
||
|
||
**Authentik UI → Flows & Stages → Enrollment Flow überprüfen:**
|
||
|
||
```
|
||
Flows → Enrollment
|
||
├── Stage 1: "Identify" (if not exists)
|
||
│ └── Binding: "Identification (if not exists)"
|
||
├── Stage 2: "Write" (wichtig!)
|
||
│ └── Binding: "Create or update user"
|
||
│ └── User Creation Policies: ???
|
||
├── Stage 3: (optional) Weitere Datenerfassung
|
||
└── Stage 4: "Finish"
|
||
```
|
||
|
||
**Häufiger Fehler**: "Write" Stage ist nicht korrekt mit den benötigten Feldern konfiguriert.
|
||
|
||
**Fix:**
|
||
|
||
1. Authentik Admin UI: `https://auth.axion1337.chat`
|
||
2. **Flows & Stages** → **Stages**
|
||
3. Nach "Write" Stage suchen (Filter: "write")
|
||
4. Klick auf "Write Stage"
|
||
5. **Field Bindings** überprüfen:
|
||
- [ ] `username` ← MUSS mit Authentik Username bindbar sein
|
||
- [ ] `email` ← MUSS vorhanden sein
|
||
- [ ] `name` ← Optional, aber empfohlen
|
||
6. Alle sollten "required" sein (nicht optional)
|
||
7. **Save**
|
||
|
||
Dann zurück zu **Flows** → **Enrollment**:
|
||
1. Stages überprüfen (oben)
|
||
2. Bindings überprüfen:
|
||
- Each Stage hat "Binding" Feld
|
||
- "Write" Stage sollte mit "Create or update user" gebunden sein
|
||
3. **Save**
|
||
|
||
---
|
||
|
||
## Problem 3: OIDC Token werden nicht korrekt zu Synapse weitergeleitet
|
||
|
||
### Symptom
|
||
- User kommt bis zu ElementWeb
|
||
- Nach Login zu Authentik: "User not found in Synapse" oder Loop
|
||
- Oder: User wird in Authentik angelegt, aber nicht in Synapse
|
||
|
||
### Lösung
|
||
|
||
Das ist komplexer und erfordert MAS-Konfiguration + Synapse-Konfiguration.
|
||
|
||
**MAS Config (upstream_oauth2_config)** muss korrekt sein (siehe Problem 1).
|
||
|
||
**Zusätzlich in MAS Secret:**
|
||
|
||
```yaml
|
||
# apps/production/custom-configs/mas-secret.yaml
|
||
matrixAuthenticationService:
|
||
# ... upstream_oauth2_config ...
|
||
|
||
# User-Provisioning Konfiguration
|
||
access:
|
||
# Benutzer aus OIDC Provider automatisch erzeugen
|
||
auto_provision: true
|
||
# Synapse URL
|
||
home_server: "https://matrix.axion1337.chat"
|
||
```
|
||
|
||
---
|
||
|
||
## Problem 4: ElementWeb zeigt nicht automatisch OIDC-Button
|
||
|
||
### Symptom
|
||
- MAS läuft und hat OIDC konfiguriert
|
||
- ElementWeb zeigt nur "Sign in with username" oder "SAML login"
|
||
- Kein "Sign in with Authentik" Button
|
||
|
||
### Lösung
|
||
|
||
ElementWeb muss die MAS-Konfiguration kennen. Das geschieht über `.well-known/matrix/client`:
|
||
|
||
**Test:**
|
||
```bash
|
||
curl https://axion1337.chat/.well-known/matrix/client | jq '.authentication'
|
||
```
|
||
|
||
Sollte zurückgeben:
|
||
```json
|
||
{
|
||
"flows": [
|
||
{
|
||
"stages": ["m.login.sso"]
|
||
}
|
||
],
|
||
"identity_providers": [
|
||
{
|
||
"id": "authentik",
|
||
"name": "Authentik",
|
||
"icon": "...",
|
||
"brand": "custom"
|
||
}
|
||
]
|
||
}
|
||
```
|
||
|
||
Falls nicht: **ElementWeb Config in Element-Stack aktualisieren:**
|
||
|
||
```yaml
|
||
# apps/production/custom-configs/element-values.yaml
|
||
elementWeb:
|
||
config:
|
||
auth:
|
||
sso_redirect_options:
|
||
immediate: false
|
||
on_welcome_page: true
|
||
```
|
||
|
||
**Dann:**
|
||
```bash
|
||
git add apps/production/custom-configs/element-values.yaml
|
||
git commit -m "Fix: Enable SSO redirect in ElementWeb"
|
||
git push
|
||
flux reconcile kustomization production-apps --with-source
|
||
```
|
||
|
||
---
|
||
|
||
## Problem 5: User kann sich anmelden, aber Boje ist nicht in Matrix
|
||
|
||
### Symptom
|
||
- Authentik-Login funktioniert
|
||
- MAS zeigt User erfolgreich
|
||
- ElementWeb Login funktioniert
|
||
- **ABER**: User ist nicht in Synapse (check mit `kubectl exec -n matrix synapse ...`)
|
||
|
||
### Lösung
|
||
|
||
Das bedeutet: User wird nicht automatisch in Synapse provisioniert.
|
||
|
||
**MAS muss User zu Synapse erstellen:**
|
||
|
||
In MAS Secret, `access` Sektion:
|
||
|
||
```yaml
|
||
matrixAuthenticationService:
|
||
access:
|
||
# Synapse erlaubt neue User-Erstellung
|
||
homeserver: "https://matrix.axion1337.chat"
|
||
|
||
# Optional: User automatisch erstellen
|
||
registration_enabled: true
|
||
```
|
||
|
||
**Synapse-seitig** muss auch User-Erstellung erlaubt sein:
|
||
|
||
```yaml
|
||
# apps/production/custom-configs/synapse-values.yaml
|
||
synapse:
|
||
additional:
|
||
registration:
|
||
config: |
|
||
enable_registration: true
|
||
enable_registration_without_token: false
|
||
# Token wird von MAS bereitgestellt
|
||
```
|
||
|
||
---
|
||
|
||
## Komplettes Test-Szenario
|
||
|
||
Nach allen Fixes:
|
||
|
||
1. **Browser 1**: `https://axion1337.chat` öffnen
|
||
2. Auf ElementWeb "Sign in" klicken
|
||
3. "Sign in with Authentik" klicken (sollte sichtbar sein)
|
||
4. Authentik-Login durchführen (akadmin)
|
||
5. Nach Login: Enrollment-Flow (nur falls neuer User)
|
||
6. Zurück zu ElementWeb
|
||
7. **Synapse prüfen**:
|
||
```bash
|
||
kubectl exec -it -n matrix deployment/synapse -- \
|
||
/usr/local/bin/psql -U synapse -d synapse -c "SELECT name, admin FROM users LIMIT 10;"
|
||
```
|
||
8. Neuer User sollte auftauchen
|
||
|
||
---
|
||
|
||
## Debugging-Commands (während Test)
|
||
|
||
```bash
|
||
# Live MAS logs (folgen)
|
||
kubectl logs -n matrix -l app=matrix-authentication-service -f
|
||
|
||
# Authentik logs
|
||
kubectl logs -n authentik -l app.kubernetes.io/name=authentik -f
|
||
|
||
# Port-Forward für manuelles Testen
|
||
kubectl port-forward -n matrix svc/matrix-authentication-service 8765:8080
|
||
|
||
# MAS Secret auslesen (im Cluster)
|
||
kubectl get secret ess-mas-values-secret -n matrix -o jsonpath='{.data.values\.yaml}' | base64 -d
|
||
|
||
# Synapse User-Liste
|
||
kubectl exec -it -n matrix deployment/synapse -- \
|
||
/usr/local/bin/psql -U synapse -d synapse -c "SELECT name, admin, is_guest FROM users;"
|
||
```
|
||
|
||
---
|
||
|
||
## Checkliste für erfolgreichen Fix
|
||
|
||
- [ ] MAS Secret decrypted, upstream_oauth2_config eingetragen
|
||
- [ ] Client ID + Secret von Authentik kopiert
|
||
- [ ] MAS Secret re-encrypted und commited
|
||
- [ ] Authentik Enrollment Flow überprüft
|
||
- [ ] OIDC Provider in Authentik aktiv
|
||
- [ ] OIDC Application "matrix" in Authentik existiert
|
||
- [ ] MAS Pod neu gestartet (nach Secret-Change)
|
||
- [ ] ElementWeb zeigt OIDC-Button
|
||
- [ ] Test-Login durchgeführt
|
||
- [ ] Neuer User in Synapse DB vorhanden
|
||
|
||
---
|
||
|
||
**Fragen?** → Siehe `DIAGNOSTIK-AUTHENTIK-FLOW.md` für tiefergehende Diagnose.
|