Anmeldung ueber Authentik und andere OIDC-Anbieter

Anmeldefluss mit PKCE (S256), State und Nonce. Das ID-Token wird gegen den
JWKS des Anbieters geprueft — Signatur, Aussteller, Empfaenger, Ablauf und
Nonce; alles Noetige kommt aus dem Discovery-Dokument, damit die Anbindung
nicht auf Authentik festgelegt ist.

Wiedererkannt wird jemand an der Kennung des Anbieters (sub), nicht an der
E-Mail-Adresse — Adressen aendern sich. Ein bestehendes Konto mit derselben
Adresse wird verknuepft statt verdoppelt, aber nur bei bestaetigter Adresse:
sonst koennte sich beim Anbieter jemand eine fremde Adresse eintragen und
damit ein hiesiges Konto uebernehmen.

Uebernommen wird bewusst nur, wer jemand ist — plus die Instanz-Administration,
wenn OIDC_ADMIN_GROUP gesetzt ist. Gruppen und Rollen bleiben Sache dieser
Anwendung: die Gruppen im Verzeichnis bedeuten etwas anderes als die hier.

Konten aus dem Verzeichnis haben kein Passwort mehr (passwordHash ist jetzt
optional); Konto-Bereich und Passwort-Anmeldung sagen das statt an einer
leeren Pruefung zu scheitern.

Anleitung mit allen Feldern in Authentik: docs/authentik.md
This commit is contained in:
Florian Wilde
2026-08-15 00:12:21 +02:00
parent e296b1e6c2
commit c8d60d8006
14 changed files with 1039 additions and 11 deletions
+31
View File
@@ -26,6 +26,37 @@ AUTH_ENABLED=false
# grosse Werte machen die Sicherung entsprechend schwer.
MAX_UPLOAD_MB=10
# --- Anmeldung ueber Authentik oder einen anderen OIDC-Anbieter -------------
# Setzt AUTH_ENABLED=true voraus. Einrichtung siehe docs/authentik.md.
OIDC_ENABLED=false
# Basis-URL des Anbieters, unter der /.well-known/openid-configuration liegt.
# Bei Authentik: https://auth.example.com/application/o/<slug>/
OIDC_ISSUER=
OIDC_CLIENT_ID=
OIDC_CLIENT_SECRET=
# Beschriftung des Knopfs auf der Anmeldeseite.
OIDC_BUTTON_LABEL=Mit Authentik anmelden
# Angeforderte Bereiche. "openid" ist Pflicht, "email" wird gebraucht.
OIDC_SCOPES=openid email profile
# Nur noch ueber den Anbieter anmelden? Dann verschwindet das Passwortfeld.
# Vorsicht: Faellt der Anbieter aus, kommt niemand mehr hinein — zum Loesen
# hier auf false setzen und neu starten.
OIDC_ONLY=false
# Rolle, die neu angelegte Benutzer in der Standardgruppe bekommen.
# VIEWER (nur lesen), EDITOR (Codes anlegen und aendern) oder ADMIN.
OIDC_DEFAULT_ROLE=VIEWER
# Gruppe beim Anbieter, deren Mitglieder die Verwaltung oeffnen duerfen.
# Leer lassen, um die Administratorrechte hier in der Anwendung zu pflegen.
OIDC_ADMIN_GROUP=
# Name des Anspruchs, in dem die Gruppen stehen (Authentik: groups).
OIDC_GROUPS_CLAIM=groups
# --- PostgreSQL ------------------------------------------------------------
POSTGRES_USER=qrcode
POSTGRES_PASSWORD=bitte-aendern