> ## Documentation Index
> Fetch the complete documentation index at: https://docs.reiner.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# SSO mit Okta einrichten

> Schritt-für-Schritt: Single Sign-on über Okta verbinden, Domain verifizieren und Anmeldung erzwingen.

<Note>
  **Für wen dieser Artikel ist:** für den **Organisationsinhaber** in Reiner, der Single Sign-On konfiguriert — gemeinsam mit einem **Okta-Administrator**, der eine App-Integration anlegen kann. Oft ist das dieselbe Person.

  **Ergebnis:** Die Mitglieder deiner Organisation melden sich mit ihrem Okta-Konto bei Reiner an, und du kannst SSO für alle verifizierten Domains verpflichtend machen.

  Die Entra ID-Variante dieser Anleitung findest du unter [**SSO mit Microsoft Entra ID einrichten**](/admin/sso-entra-id) — nutze diese, wenn dein Identity Provider Microsoft Entra ID ist.
</Note>

## So funktioniert es

Reiner vermittelt die Anmeldungen über deine Okta-Org per Standard **OpenID Connect**. Du legst eine Anwendung in Okta an, weist nach, dass dir deine E-Mail-Domain gehört, und trägst dann drei Werte in Reiner ein. Sobald SSO erzwungen wird, wird jede Person mit einer E-Mail-Adresse aus einer verifizierten Domain direkt zu Okta zur Anmeldung weitergeleitet.

## Bevor du startest

* Du bist **Organisationsinhaber** in Reiner. Nur Inhaber können SSO konfigurieren.
* Dein Plan enthält SSO. Falls du den SSO-Bereich nicht siehst, wende dich an Reiner.
* Du hast **Administrator-Zugriff auf Okta**, um eine App-Integration und ein Client Secret zu erstellen.
* Du kannst für jede E-Mail-Domain, die du nutzen möchtest, einen **DNS-TXT-Eintrag** anlegen.

<Tip>
  **Die drei Werte, die du von Okta nach Reiner überträgst:** die **Okta-Domain**, die **Client ID** und das **Client Secret**. Und der **eine Wert**, den du von Reiner nach Okta überträgst: die **Redirect URI**.
</Tip>

## Schritt 1 — Redirect URI in Reiner abholen

<Steps>
  <Step title="Einstellungen öffnen">
    Öffne in Reiner **Organisationseinstellungen → Single Sign-On (SSO)**.
  </Step>

  <Step title="Okta wählen">
    Wähle in der Auswahl des Identity Providers **Okta**.
  </Step>

  <Step title="Redirect URI kopieren">
    Kopiere die dort angezeigte **Redirect URI**. Sie sieht so aus: `https://account.reiner.ai/realms/<realm>/broker/sso-<deine-org-id>/endpoint`
  </Step>
</Steps>

<Warning>
  Kopiere immer genau die Redirect URI, die in deinen Reiner-SSO-Einstellungen angezeigt wird. Sie ist einzigartig für deine Organisation. Okta lehnt die Anmeldung ab, wenn dieser Wert nicht zeichengenau übereinstimmt.
</Warning>

## Schritt 2 — App-Integration in Okta anlegen

Das machst du in der **Okta Admin Console → Applications → Applications**.

<Steps>
  <Step title="App-Integration erstellen">
    Klick auf **Create App Integration**. Wähle **OIDC - OpenID Connect** und als Anwendungstyp **Web Application**. Klick auf **Next**.
  </Step>

  <Step title="Name vergeben">
    Gib einen Namen ein, z. B. `Reiner AI SSO`.
  </Step>

  <Step title="Grant Type prüfen">
    Lass unter **Grant type** die Option **Authorization Code** aktiviert.
  </Step>

  <Step title="Redirect URI eintragen">
    Füge unter **Sign-in redirect URIs** die Redirect URI aus Schritt 1 ein. **Sign-out redirect URIs** kannst du leer lassen.
  </Step>

  <Step title="Zuweisen und speichern">
    Weise unter **Assignments** die Nutzer oder Gruppen zu, die sich bei Reiner anmelden dürfen. Klick auf **Save**.
  </Step>

  <Step title="Zugangsdaten kopieren">
    Kopiere im Tab **General** der App die **Client ID** und das **Client Secret** aus dem Abschnitt **Client Credentials**.
  </Step>
</Steps>

<Warning>
  Wähle **Web Application** — nicht SPA und nicht Native. Der Broker von Reiner ist ein Confidential Client und benötigt ein Client Secret, das nur der Typ Web Application ausgibt.
</Warning>

<Info>
  Okta sendet den Standard-Claim `email` mit den Scopes `email` und `profile`. Das Problem mit fehlenden E-Mail-Adressen, das bei Entra ID auftreten kann, gibt es hier also nicht. Stell nur sicher, dass deine SSO-Nutzer in Okta eine E-Mail-Adresse haben (was normalerweise der Fall ist).
</Info>

## Schritt 3 — E-Mail-Domain in Reiner verifizieren

<Steps>
  <Step title="Domain hinzufügen">
    Zurück in **Organisationseinstellungen → Single Sign-On (SSO)**: Füge unter **Domains** die Domain hinzu, mit der sich deine Nutzer anmelden, z. B. `acme.com`.
  </Step>

  <Step title="DNS-Eintrag anlegen">
    Reiner zeigt dir ein **Verifizierungs-Token**. Lege einen DNS-TXT-Eintrag an, siehe Tabelle unten.
  </Step>

  <Step title="Verifizieren">
    Warte, bis das DNS propagiert ist (meist wenige Minuten), und klick dann neben der Domain auf **Verifizieren**.
  </Step>
</Steps>

| Eintragstyp | Host / Name         | Wert                           |
| ----------- | ------------------- | ------------------------------ |
| TXT         | `_reiner-challenge` | das in Reiner angezeigte Token |

<Tip>
  Du kannst mehr als eine Domain hinzufügen. Jede Domain wird einzeln verifiziert, und eine Domain kann nur zu einer Organisation gehören.
</Tip>

## Schritt 4 — SSO in Reiner verbinden

<Steps>
  <Step title="Verbinden öffnen">
    Prüfe in **Organisationseinstellungen → Single Sign-On (SSO)**, dass als Provider **Okta** eingestellt ist, und klick dann auf **Verbinden** (oder **Konfigurieren**).
  </Step>

  <Step title="Werte eintragen">
    Füge die drei Werte aus der Tabelle unten ein.
  </Step>

  <Step title="Speichern">
    Reiner prüft die Discovery URL und speichert die Verbindung. Das Client Secret wird ausschließlich in das Anmeldesystem geschrieben und nie im Klartext gespeichert.
  </Step>
</Steps>

| Feld in Reiner    | Woher der Wert kommt                         |
| ----------------- | -------------------------------------------- |
| **Okta-Domain**   | Deine Okta-Org-Domain, z. B. `acme.okta.com` |
| **Client ID**     | Client Credentials, Schritt 2.6              |
| **Client Secret** | Client Credentials, Schritt 2.6              |

<Check>
  **Die Discovery URL musst du nicht selbst zusammenbauen.** Reiner setzt sie aus deiner Okta-Domain zusammen und zeigt sie unter dem Feld als Vorschau an (**„Discovery-URL: …"**) — so kannst du sie vor dem Speichern gegenprüfen. Verwendet wird der **Org Authorization Server**, die richtige Wahl für die Anmeldung.
</Check>

### Sonderfall: Custom Authorization Server

Falls sich deine Organisation auf einen **Custom Authorization Server** festgelegt hat, aktiviere **„Stattdessen eine benutzerdefinierte Discovery-URL eingeben"** und trage dessen Metadata-URL ein, zum Beispiel:

`https://<deine-okta-domain>/oauth2/<authServerId>/.well-known/openid-configuration`

Beides funktioniert — Reiner liest die Endpunkte aus der Discovery URL, die du angibst.

## Schritt 5 — Testen, bevor du SSO erzwingst

<Tip>
  Teste zuerst mit einem Mitglied, das **nicht Inhaber** ist — so behältst du deinen Inhaber-Zugang, falls etwas nicht stimmt. Stell sicher, dass dieses Mitglied der Okta-App zugewiesen ist (Schritt 2.5).
</Tip>

<Steps>
  <Step title="Anmeldelink kopieren">
    Kopiere den **SSO-Anmeldelink** aus deinen SSO-Einstellungen, oder öffne Reiner und wähle **Mit SSO anmelden**.
  </Step>

  <Step title="Testanmeldung prüfen">
    Prüfe, dass der Testnutzer zu Okta weitergeleitet wird, sich anmeldet und mit dem richtigen Konto in Reiner landet.
  </Step>
</Steps>

## Schritt 6 — SSO erzwingen

Wenn der Test erfolgreich war, aktiviere **SSO erzwingen**. Ab dann wird jede Person mit einer E-Mail-Adresse aus einer verifizierten Domain direkt zu Okta geleitet und kann kein Passwort mehr nutzen.

<Note>
  **Du kommst immer wieder rein.** Falls SSO einmal nicht funktioniert, kann ein Organisationsinhaber auf der [SSO-Recovery-Seite](https://app.reiner.ai/login/sso-recovery) einen einmaligen Ersatz-Anmeldelink anfordern. Der Link ist einmalig nutzbar und läuft nach 15 Minuten ab. Genau deshalb ist der Test mit einem Nicht-Inhaber in Schritt 5 wichtig — Inhaber behalten so einen Wiederherstellungsweg.
</Note>

## SSO später verwalten

* **Erzwingen deaktivieren (Killswitch):** Schalte **SSO erzwingen** aus. Mitglieder können sich dann wieder ohne SSO anmelden. Die Verbindung bleibt konfiguriert.
* **Client Secret rotieren:** Erstelle ein neues Secret in Okta und trage es über **Secret ersetzen** in Reiner ein. Erzwingen und Domains bleiben erhalten.
* **Domains hinzufügen oder entfernen:** Verwalte sie in der Liste **Domains**. Jede neue Domain braucht ihre eigene DNS-TXT-Verifizierung.
* **SSO vollständig trennen:** Nutze **Verbindung trennen**.

<Note>
  **Was Verbindung trennen macht — und was nicht.** Das Trennen entfernt die Verbindung auf Seiten von Reiner: die Verbindung wird von deiner Organisation entkoppelt, die verifizierten Domains werden zurückgesetzt, die gespeicherte Konfiguration gelöscht und die SSO-Verknüpfung deiner Mitglieder aufgehoben. Deine Okta-Org wird dabei **nicht** angetastet — Reiner hat dort keinen Administrator-Zugriff. Deine Okta-App-Integration ist ohne die Verbindung wirkungslos (ihre Redirect URI löst nicht mehr auf), und du kannst sie in der Okta Admin Console löschen oder deaktivieren, wann es dir passt.
</Note>

## Funktioniert etwas nicht?

| Symptom                                                  | Wahrscheinliche Ursache und Lösung                                                                                                                                                                |
| -------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Okta-Fehler: **user is not assigned to the app**         | Weise den Nutzer (oder seine Gruppe) der Reiner-App-Integration in Okta zu (Schritt 2.5).                                                                                                         |
| Okta-Fehler / Weiterleitung nach der Anmeldung abgelehnt | Die **Sign-in redirect URI** in Okta stimmt nicht mit der in Reiner überein. Kopiere sie erneut aus Schritt 1 und prüfe, dass sie in der Integration vom Typ **Web Application** eingetragen ist. |
| Verbinden schlägt bei der Prüfung der Discovery URL fehl | Prüfe die Okta-Domain. Nutzt du eine benutzerdefinierte Discovery URL, prüfe, dass sie auf `/.well-known/openid-configuration` endet. Sie muss öffentlich per HTTPS erreichbar sein.              |
| Domain wird nicht verifiziert                            | Prüfe, dass der Host des TXT-Eintrags genau `_reiner-challenge` lautet und der Wert dem Token entspricht. Gib dem DNS Zeit zu propagieren.                                                        |
| Nutzer werden nicht zu SSO weitergeleitet                | Ihre E-Mail-Domain ist nicht verifiziert, oder das Erzwingen ist ausgeschaltet. Verifiziere die Domain und aktiviere **SSO erzwingen**.                                                           |

Immer noch nicht gelöst? Wende dich mit dem Namen deiner Organisation und dem ungefähren Zeitpunkt der fehlgeschlagenen Anmeldung an den Reiner-Support.
