diff --git a/docs/authentik.md b/docs/authentik.md index 175e251..f450bc3 100644 --- a/docs/authentik.md +++ b/docs/authentik.md @@ -42,7 +42,7 @@ Adressen. | Client type | **Confidential** | | Client ID | notieren — kommt gleich in die `.env` | | Client Secret | notieren — ebenfalls | -| Redirect URIs | `https://qr.example.com/api/auth/oidc/callback` | +| Redirect URIs | **deine** `BASE_URL` + `/api/auth/oidc/callback` — siehe unten | | Signing Key | ein vorhandenes Zertifikat auswählen | | Subject mode | `Based on the User's hashed ID` (Voreinstellung) | @@ -50,9 +50,49 @@ Zu den **Scopes**: `openid`, `email` und `profile` müssen ausgewählt sein. Ohne `email` liefert Authentik keine Adresse, und die Anwendung lehnt die Anmeldung mit einer entsprechenden Meldung ab. -> **Redirect URI genau so eintragen.** Ein fehlendes `https://`, ein Schrägstrich -> zu viel oder ein anderer Hostname führt zu `redirect_uri mismatch` — -> Authentik bricht dann ab, bevor die Anwendung überhaupt etwas mitbekommt. +### Die Redirect URI + +Das ist der häufigste Stolperstein. Der Wert ist **kein Beispiel zum +Abschreiben**, sondern ergibt sich aus deiner `BASE_URL`: + +``` +{BASE_URL}/api/auth/oidc/callback +``` + +Was dein Container als `BASE_URL` kennt, zeigt: + +```bash +docker compose exec app env | grep BASE_URL +``` + +Ein paar Beispiele: + +| `BASE_URL` | Redirect URI | +| --- | --- | +| `https://qr.example.com` | `https://qr.example.com/api/auth/oidc/callback` | +| `http://10.10.10.150:3005` | `http://10.10.10.150:3005/api/auth/oidc/callback` | +| `http://192.168.1.50:3000` | `http://192.168.1.50:3000/api/auth/oidc/callback` | + +Zu beachten: + +- **Kein Schrägstrich am Ende.** +- **Schema und Port gehören dazu** — `http` ist nicht `https`, und `:3005` + darf nicht fehlen. +- Neben dem Feld steht in neueren Authentik-Fassungen eine Auswahl **Strict** + oder **Regex**. Für eine feste Adresse muss dort **Strict** stehen. Bei + `Regex` wäre jeder Punkt einer IP-Adresse ein Platzhalter und müsste + maskiert werden. +- Bleibt das Feld leer, lässt Authentik **gar nichts** durch. + +> **Wenn es trotzdem klemmt:** Authentik zeigt den Fehler „Redirect URI Error“ +> noch auf seiner eigenen Seite an — die Anwendung bekommt davon nichts mit. +> Welche Adresse tatsächlich ankam, steht zum Vergleich +> 1. in der Adresszeile des Browsers, im Parameter `redirect_uri`, und +> 2. in Authentik unter **Events → Logs** im Eintrag `redirect_uri_error`. +> +> Weicht die ankommende Adresse von deiner `BASE_URL` ab, ist nicht Authentik +> falsch eingestellt, sondern die `BASE_URL` — und die gehört korrigiert, +> bevor der erste dynamische Code entsteht: Sie steckt in jedem davon. --- @@ -216,7 +256,7 @@ Danach verschwindet das Passwortfeld von der Anmeldeseite. | Der Knopf erscheint nicht | `AUTH_ENABLED` oder `OIDC_ENABLED` steht nicht auf `true`. Prüfen mit `docker compose exec app env \| grep OIDC`. Steht dort nichts, fehlt die Variable im `environment:`-Block der `docker-compose.yml` — die `.env` allein reicht nicht. | | „Die Anmeldung über den externen Anbieter ist unvollständig eingerichtet“ | Es fehlt `OIDC_ISSUER`, `OIDC_CLIENT_ID` oder `OIDC_CLIENT_SECRET`. Die Meldung nennt, welche. | | „Der Anmelde-Anbieter ist nicht erreichbar“ | Der Container kommt nicht an Authentik. Testen mit `docker compose exec app wget -qO- /.well-known/openid-configuration`. Häufig: interner DNS-Name statt öffentlicher Adresse. | -| Authentik meldet `redirect_uri mismatch` | Die Redirect URI im Provider stimmt nicht exakt mit `{BASE_URL}/api/auth/oidc/callback` überein. Auf Schema, Hostname und Schrägstriche achten. | +| Authentik zeigt „Redirect URI Error“ | Die Redirect URI im Provider stimmt nicht exakt mit `{BASE_URL}/api/auth/oidc/callback` überein — siehe [Die Redirect URI](#die-redirect-uri). Auf Schema, Port, Schrägstrich am Ende und die Auswahl Strict/Regex achten. | | „Der Anbieter hat keine E-Mail-Adresse geliefert“ | Der Scope `email` fehlt im Provider, oder der Benutzer hat in Authentik keine Adresse hinterlegt. | | „Der Anbieter hat die Anmeldung abgelehnt“ | Der Benutzer ist der Application in Authentik nicht zugeordnet — Policy/Group Binding prüfen. | | „Der Anmeldevorgang ist abgelaufen“ | Zwischen Klick und Rückkehr sind mehr als 10 Minuten vergangen, oder der Cookie ging verloren. Häufigste echte Ursache: `BASE_URL` zeigt auf eine andere Adresse als die, über die der Browser kommt. |