# Redirect- & State-Flow

ab Economy

Überblick

So funktionieren Rücksprung (redirect_uri) und Status-Übergabe (state) im DocCheck Login – kompakt, konsistent und sicher.

# Redirect (redirect_uri)

  • DocCheck leitet nach Login auf die konfigurierte Callback-URL zurück.
  • Dynamische Zielseiten werden nicht über redirect_uri gesteuert, sondern über state.
  • Nur HTTPS. Keine personenbezogenen Daten in der redirect_uri übergeben.

# State

Einsatzzwecke von state:

  • App-Status/Parameter durch den Login schleusen (z. B. Bereich/Schritt).
  • Zielauswahl nach Rückkehr (Mapping von Schlüssel → interne URL).
  • CSRF-Schutz: vom Client gesetzten Wert vor und nach Login vergleichen.

Eigenschaften und Format:

  • Wird unverändert an die Callback-URL als Query-Parameter angehängt und von API-Endpunkten in JSON zurückgegeben.
  • URL-encoding erforderlich; vermeiden Sie problematische Zeichen. Faustregel: A–Z a–z 0–9 - . _ ~ (alles andere percent-encoden) und max. ~255 Zeichen.
  • Keine kompletten URLs und keine personenbezogenen Daten im state.

# Ablauf (kurz)

  1. Anwendung generiert state (zufällig für CSRF + optional kurzer Schlüssel für Ziel).
  2. Login-Button übergibt state an DocCheck.
  3. DocCheck hängt state beim Redirect an Ihre Callback-URL an; APIs liefern state in der Payload zurück.
  4. Anwendung prüft state (CSRF) und löst ggf. ein internes Ziel-Mapping aus.

# Beispiele

Login-Button mit redirectUri und state:

<dc-login-button size="large" language="de" loginClientId="[CLIENT_ID]"
	redirectUri="https://yourserver.com/callback" state="bereich_orange"></dc-login-button>

Einfaches Ziel-Mapping nach dem festen Callback (ohne dynamische redirect_uri):

$target = $_GET['state'] ?? '';
switch ($target) {
	case 'bereich_orange': header('Location: https://yourserver.com/orange'); break;
	case 'bereich_rot':    header('Location: https://yourserver.com/red');    break;
	default: /* kein Redirect, Standardansicht */ ;
}

# Sicherheit und Best Practices

  • state immer prüfen (CSRF). Wert vor Login speichern, nach Rückkehr vergleichen.
  • Nur bekannte Schlüssel auf erlaubte Ziele mappen (keine offenen Redirects).
  • redirect_uri nur whitelisted Ziele, ausschließlich HTTPS, korrekt encodieren.
  • Keine Personenbezogenen Daten in state oder redirect_uri aufnehmen.