> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# OIDC-Authentifizierung

> Benutzern die Anmeldung über einen OpenID-Connect-Anbieter in einem Kubernetes-Deployment ermöglichen.

Die OIDC-Anmeldung wird vom **web**-Dienst (dem `authentication`-Modul) in jedem Ayakaleaf-Pro-Pod abgewickelt. Sie hat keinen Hintergrundjob und keinen separaten Pod. Die Anbieterseite (Client, Redirect-URIs, Administrator-Claim) ist dieselbe wie beim Toolkit; richten Sie daher zuerst Ihren OpenID Provider (OP) gemäß [OIDC-Authentifizierung](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/overleaf-toolkit/authentication/oidc-authentication.md) ein und übertragen Sie die Werte dann wie unten gezeigt in Kubernetes.

### Wo was läuft

| | |
| - | - |
| Dienst | web, in jedem Ayakaleaf-Pro-Pod; Einstellungen werden beim Start von web gelesen |
| Pod → OP | `OVERLEAF_OIDC_TOKEN_URL` und `OVERLEAF_OIDC_USER_INFO_URL`, bei jeder Anmeldung |
| Browser → OP | `OVERLEAF_OIDC_AUTHORIZATION_URL` sowie `OVERLEAF_OIDC_LOGOUT_URL` bei der Abmeldung |
| OP → Overleaf | keine: Der OP leitet nur den Browser zurück |
| Anmeldestatus | die Sitzung in Redis, von allen Replikaten gemeinsam genutzt |
| Periodische Jobs | keine |

### Konfiguration

**1. Overleaf beim OP registrieren**

Erlauben Sie in Ihrem OP diese Adressen, die aus `OVERLEAF_SITE_URL` gebildet werden:

| Zweck | URI |
| - | - |
| Redirect-URI (Anmeldung) | `${OVERLEAF_SITE_URL}/oidc/login/callback` |
| Post-Logout-Redirect-URI | `${OVERLEAF_SITE_URL}` |
| Post-Logout-Redirect-URI nach dem Verknüpfen eines bestehenden Kontos | `${OVERLEAF_SITE_URL}/user/settings` |

Die fünf URLs finden Sie im Discovery-Dokument des OP, wie unter [Die Werte mit dem Discovery-Dokument ermitteln](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/overleaf-toolkit/authentication/oidc-authentication.md#finding-the-values-with-the-discovery-document) beschrieben.

**2. Die Einstellungen zur ConfigMap hinzufügen**

Fügen Sie Folgendes zu `overleaf-env` hinzu (`30-config.yaml` bzw. `60-config.yaml` für [mehrere Replikate](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/kubernetes/horizontal-scaling.md)):

```yaml title="30-config.yaml (additions)" wrap theme={null}
  EXTERNAL_AUTH: oidc
  OVERLEAF_OIDC_PROVIDER_ID: authentik
  OVERLEAF_OIDC_PROVIDER_NAME: Authentik
  OVERLEAF_OIDC_IDENTITY_SERVICE_NAME: Log in with Authentik
  OVERLEAF_OIDC_ISSUER: https://authentik.example.com/application/o/overleaf/
  OVERLEAF_OIDC_AUTHORIZATION_URL: https://authentik.example.com/application/o/authorize/
  OVERLEAF_OIDC_TOKEN_URL: https://authentik.example.com/application/o/token/
  OVERLEAF_OIDC_USER_INFO_URL: https://authentik.example.com/application/o/userinfo/
  OVERLEAF_OIDC_LOGOUT_URL: https://authentik.example.com/application/o/overleaf/end-session/
  OVERLEAF_OIDC_CLIENT_ID: <Client ID>
  OVERLEAF_OIDC_USER_ID_FIELD: username
  OVERLEAF_OIDC_IS_ADMIN_FIELD: groups
  OVERLEAF_OIDC_IS_ADMIN_FIELD_VALUE: Admins
  OVERLEAF_OIDC_UPDATE_USER_DETAILS_ON_LOGIN: "true"
```

`EXTERNAL_AUTH` akzeptiert eine durch Leerzeichen getrennte Liste, zum Beispiel `ldap oidc`. Unter [Umgebungsvariablen](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/overleaf-toolkit/authentication/oidc-authentication.md#environment-variables) finden Sie jede `OVERLEAF_OIDC_*`-Einstellung; alle gehören in die ConfigMap, außer dem Client Secret.

> [!WARNING]
>
> Setzen Sie `"true"` und `"false"` in Anführungszeichen: Eine ConfigMap enthält nur Zeichenketten. Ein auf `""` gesetzter Schlüssel ist nicht dasselbe wie ein fehlender Schlüssel: `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS: ""` deaktiviert die Kontoerstellung bei der ersten Anmeldung, während das Weglassen des Schlüssels jede Domain erlaubt.

**3. Das Client Secret in das Secret eintragen**

```bash theme={null}
kubectl -n overleaf patch secret overleaf-secrets --type merge \
  -p '{"stringData":{"OVERLEAF_OIDC_CLIENT_SECRET":"<Client Secret>"}}'
```

**4. Einer privaten CA vertrauen (optional)**

Wenn das Zertifikat des OP von Ihrer eigenen CA stammt, fügen Sie die CA zum Secret `overleaf-certs` hinzu, das unter `/var/lib/overleaf/certs` eingehängt ist (siehe [Zertifikate und andere Dateien](https://ayakaleaf-pro.mintlify.site/de/on-premises/configuration/kubernetes#zertifikate-und-andere-dateien)), und verweisen Sie Node.js darauf:

```yaml theme={null}
  NODE_EXTRA_CA_CERTS: /var/lib/overleaf/certs/ca.pem
```

**5. Anwenden und neu starten**

```bash theme={null}
kubectl apply -f 30-config.yaml
kubectl -n overleaf rollout restart deployment/overleaf     # or statefulset/overleaf
kubectl -n overleaf rollout status deployment/overleaf
```

Prüfen Sie anschließend, ob jeder Pod den Token-Endpunkt erreicht. Die Pods rufen ihn auf, nicht der Browser, daher zeigt sich ein Firewall- oder DNS-Problem nur hier:

```bash theme={null}
for p in $(kubectl -n overleaf get pod -l app=overleaf -o name); do   # app=overleaf-ha for several replicas
  kubectl -n overleaf exec "$p" -- curl -sS -o /dev/null -w "$p %{http_code}\n" \
    https://authentik.example.com/application/o/token/
done
```

Jeder HTTP-Status (`405` für ein GET) bedeutet, dass der Endpunkt erreichbar ist; `000` bedeutet, dass er es nicht ist.

### Mehrere Replikate

Nichts weiter. Der `state`-Wert einer Anmeldung und das für die Abmeldung verwendete ID-Token werden in der Sitzung gespeichert, die in Redis liegt, sodass der Callback auf jedem Replikat funktioniert, das ihn empfängt.

### Getestet auf Kubernetes

Mit goauthentik als OP bestehen auf Kubernetes 1.37 mit drei Replikaten hinter HAProxy unsere End-to-End-Tests für OIDC (35 Fälle): Anmeldung und Abmeldung über den OP; die Administratorzuordnung per Gruppe, per E-Mail und per Einzelwert sowie ohne Zuordnung; Name und Administrator-Flag bei jeder Anmeldung aktualisiert; Verknüpfen und Trennen von Konten; Zurücksetzen und Ändern von Passwörtern von OIDC-Konten; gesperrte Konten; `OVERLEAF_OIDC_ALLOWED_EMAIL_DOMAINS`; `OVERLEAF_DISABLE_LOCAL_LOGIN`; sowie OIDC zusammen mit öffentlichem Zugriff.

### Q\&A

> [accordion] Die Anmeldung schlägt mit „Unable to verify authorization request state“ fehl
>
> **Antwort:** Der Browser hat das Sitzungscookie nicht mit dem Callback zurückgesendet. Auf Kubernetes sind die üblichen Ursachen:
>
> * `OVERLEAF_SECURE_COOKIE` ist gesetzt, aber Benutzer öffnen die Site über einfaches HTTP, sodass der Browser das Cookie nie speichert. Jeder Wert von `OVERLEAF_SECURE_COOKIE`, selbst `"false"`, aktiviert sichere Cookies; entfernen Sie stattdessen den Schlüssel.
> * Die Site wird unter einer anderen Adresse als `OVERLEAF_SITE_URL` geöffnet.
> * Hinter HTTPS sendet Ihr Ingress oder Load Balancer kein `X-Forwarded-Proto: https`, oder seine Adresse fehlt in `OVERLEAF_TRUSTED_PROXY_IPS`.

> [accordion] Wo sehe ich, warum eine Anmeldung fehlgeschlagen ist?
>
> **Antwort:** Im web-Log des Pods, der die Anfrage bearbeitet hat, nicht in `kubectl logs`:
>
> ```bash theme={null}
> kubectl -n overleaf exec deploy/overleaf -- grep -i oidc /var/log/overleaf/web.log | tail
> ```
>
> Prüfen Sie bei mehreren Replikaten jeden `overleaf-N`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.