# 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_urigesteuert, sondern überstate. - 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)
- Anwendung generiert
state(zufällig für CSRF + optional kurzer Schlüssel für Ziel). - Login-Button übergibt
statean DocCheck. - DocCheck hängt
statebeim Redirect an Ihre Callback-URL an; APIs liefernstatein der Payload zurück. - 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
stateimmer prüfen (CSRF). Wert vor Login speichern, nach Rückkehr vergleichen.- Nur bekannte Schlüssel auf erlaubte Ziele mappen (keine offenen Redirects).
redirect_urinur whitelisted Ziele, ausschließlich HTTPS, korrekt encodieren.- Keine Personenbezogenen Daten in
stateoderredirect_uriaufnehmen.