> ## 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 Microsoft Entra ID einrichten

> Schritt-für-Schritt: Single Sign-on über Microsoft Entra ID 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 **Microsoft Entra ID-Administrator** (Global Administrator oder Privileged Role Administrator), der eine Anwendung registrieren und die Administratorzustimmung erteilen kann. Oft ist das dieselbe Person.

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

## So funktioniert es

Reiner vermittelt die Anmeldungen über deinen Entra ID-Tenant per Standard **OpenID Connect**. Du registrierst eine Anwendung in Entra, 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 Entra ID 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 Microsoft Entra ID**, um eine App zu registrieren, ein Client Secret zu erstellen und die Administratorzustimmung zu erteilen. Für die Zustimmung brauchst du die Rolle **Global Administrator** oder **Privileged Role Administrator** — ein Application Administrator kann die App registrieren, aber die Zustimmung in Schritt 2.7 nicht erteilen.
* 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 Entra ID nach Reiner überträgst:** die **Verzeichnis-ID (Mandant)**, die **Client ID** und das **Client Secret**. Und der **eine Wert**, den du von Reiner nach Entra ID ü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="Microsoft Entra ID wählen">
    Wähle in der Auswahl des Identity Providers **Microsoft Entra ID**.
  </Step>

  <Step title="Redirect URI kopieren">
    Kopiere die dort angezeigte **Redirect URI**. Sie sieht so aus: `https://account.reiner.ai/realms/prod-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. Entra ID lehnt die Anmeldung ab, wenn dieser Wert nicht zeichengenau übereinstimmt.
</Warning>

## Schritt 2 — Anwendung in Microsoft Entra ID registrieren

Das machst du im [Microsoft Entra Admin Center](https://entra.microsoft.com) → **Identität → Anwendungen → App-Registrierungen**.

<Steps>
  <Step title="Neue Registrierung">
    Klick auf **Neue Registrierung**. Gib einen Namen ein, z. B. `Reiner AI SSO`.
  </Step>

  <Step title="Kontotyp wählen">
    Wähle unter **Unterstützte Kontotypen** die Option **Nur Konten in diesem Organisationsverzeichnis** (Single Tenant).
  </Step>

  <Step title="Redirect URI eintragen">
    Wähle unter **Redirect URI** die Plattform **Web** und füge die Redirect URI aus Schritt 1 ein. Klick auf **Registrieren**.
  </Step>

  <Step title="IDs kopieren">
    Kopiere auf der **Übersichtsseite** der App die **Anwendungs-ID (Client-ID)** und die **Verzeichnis-ID (Mandanten-ID)**.
  </Step>

  <Step title="Client Secret erstellen">
    Geh zu **Zertifikate & Geheimnisse → Geheime Clientschlüssel → Neuer geheimer Clientschlüssel**. Kopiere sofort den **Wert** des Secrets — er wird nur einmal angezeigt.
  </Step>

  <Step title="Optionale Ansprüche hinzufügen">
    Geh zu **Tokenkonfiguration → Optionalen Anspruch hinzufügen**. Wähle als Tokentyp **ID** und aktiviere `email`, `upn`, `given_name` und `family_name`. Klick auf **Hinzufügen** — wenn Entra ID anbietet, den dafür erforderlichen Scope `profile` zu aktivieren, bestätige das.
  </Step>

  <Step title="Administratorzustimmung erteilen">
    Öffne **API-Berechtigungen**. Prüfe, dass unter **Microsoft Graph** die delegierten Berechtigungen `openid`, `profile`, `email` und `User.Read` eingetragen sind — fehlende ergänzt du über **Berechtigung hinzufügen → Microsoft Graph → Delegierte Berechtigungen**. Klick dann auf **Administratorzustimmung für \<dein Tenant> erteilen** und bestätige. Danach muss in jeder Zeile ein grünes **Gewährt für \<dein Tenant>** stehen.
  </Step>
</Steps>

<Info>
  **Warum `given_name` und `family_name` (Schritt 2.6):** Standardmäßig enthält ein Entra ID-Token nur `name`, also den **Anzeigenamen** — keinen getrennten Vor- und Nachnamen. Das Anmeldesystem muss den Namen dann am letzten Leerzeichen aufteilen. In Tenants, deren Anzeigenamen der Konvention `Nachname Vorname` folgen (`Schmidt David`), dreht sich das um: Der Nutzer heißt in Reiner dann durchgehend Vorname `Schmidt`, Nachname `David`. Die beiden Ansprüche explizit mitzusenden, macht das Raten überflüssig.
</Info>

<Warning>
  **Schritt 2.7 nicht überspringen.** Ohne tenantweite Administratorzustimmung wird jeder Nutzer bei der ersten Anmeldung einzeln um Zustimmung gebeten — und in Tenants, in denen die Nutzerzustimmung per Richtlinie deaktiviert ist (ein verbreiteter Enterprise-Standard), scheitert die Anmeldung direkt mit **AADSTS65001** *("The user or administrator has not consented to use the application")*. Für diesen Schritt brauchst du einen **Global Administrator** oder **Privileged Role Administrator**.
</Warning>

<Info>
  **Häufigste Ursache für eine fehlgeschlagene SSO-Anmeldung: keine E-Mail-Adresse im Token.** Wenn ein Nutzer in Entra ID kein `mail`-Attribut hat und der optionale Anspruch `email` nicht konfiguriert ist, sendet Entra ID keine E-Mail-Adresse und die Anmeldung schlägt mit *"Invalid username or password."* fehl. Stell sicher, dass jeder SSO-Nutzer ein Postfach oder einen `mail`-Wert hat, und füge den optionalen Anspruch `email` wie in Schritt 2.6 hinzu. Reiner greift ersatzweise auf den UPN zurück, wenn dieser wie eine E-Mail-Adresse aussieht — die zuverlässige Lösung ist aber, `email` explizit zu konfigurieren.
</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. `titan-labs.xyz`.
  </Step>

  <Step title="DNS-Eintrag anlegen">
    Reiner zeigt dir ein **Verifizierungs-Token**. Lege damit den DNS-TXT-Eintrag aus der Tabelle unten an.
  </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">
    Klick in **Organisationseinstellungen → Single Sign-On (SSO)** 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                       |
| ---------------------------- | ------------------------------------------ |
| **Verzeichnis-ID (Mandant)** | Verzeichnis-ID (Mandanten-ID), Schritt 2.4 |
| **Client ID**                | Anwendungs-ID (Client-ID), Schritt 2.4     |
| **Client Secret**            | Wert des Secrets, Schritt 2.5              |

<Check>
  **Die Discovery URL musst du nicht selbst zusammenbauen.** Reiner setzt sie aus deiner Verzeichnis-ID zusammen und zeigt sie unter dem Feld als Vorschau an (**„Discovery-URL: …"**) — so kannst du sie vor dem Speichern gegenprüfen.
</Check>

### Sonderfall: benutzerdefinierte Discovery URL

Nutzt eure Organisation eine abweichende Entra-Umgebung, aktiviere **„Stattdessen eine benutzerdefinierte Discovery-URL eingeben"** und trage die Metadata-URL direkt ein. Kombiniere dafür die folgende Basis mit deiner **Mandanten-ID** aus Schritt 2.4:

`https://login.microsoftonline.com/<TENANT_ID>/v2.0/.well-known/openid-configuration`

## 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.
</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 Entra ID 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 Entra ID 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 oder App wechseln:** Erstelle ein neues Secret in Entra ID 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**. Damit wird die Verbindung entfernt und das SSO-Routing gestoppt.

## Funktioniert etwas nicht?

| Symptom                                                                     | Wahrscheinliche Ursache und Lösung                                                                                                                                                                                              |
| --------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| **„Invalid username or password"** direkt nach Entra ID                     | Entra ID hat für diesen Nutzer keine E-Mail-Adresse gesendet. Setze das `mail`-Attribut des Nutzers und füge den optionalen Anspruch `email` hinzu (Schritt 2.6).                                                               |
| Entra ID-Fehlerseite / Weiterleitung abgelehnt                              | Die Redirect URI in Entra ID stimmt nicht mit der in Reiner überein. Kopiere sie erneut aus Schritt 1 und prüfe, dass sie unter der Plattform **Web** eingetragen ist.                                                          |
| Verbinden schlägt bei der Prüfung der Discovery URL fehl                    | Prüfe die Verzeichnis-ID (Mandanten-ID). Nutzt du eine benutzerdefinierte Discovery URL, prüfe, dass sie auf `/v2.0/.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**.                                                                                         |
| **Vor- und Nachname sind vertauscht** (Vorname `Schmidt`, Nachname `David`) | Entra ID sendet `given_name` / `family_name` nicht, der Name wird deshalb aus dem Anzeigenamen abgeleitet. Füge beide optionalen Ansprüche hinzu (Schritt 2.6). Betroffene Nutzer werden bei der nächsten Anmeldung korrigiert. |
| **AADSTS65001** auf der Entra ID-Anmeldeseite                               | Die Administratorzustimmung wurde für die App-Registrierung nie erteilt. Erteile sie unter **API-Berechtigungen** (Schritt 2.7).                                                                                                |

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