Deutsch
  • redirect uri
  • callback
  • authorization code
  • code flow
  • oidc
  • pkce

Verstehen von Redirect URI und Autorisierungscode-Flow in OpenID Connect (OIDC)

Werfen wir einen genaueren Blick auf die Redirect URI, da sie eine kritische Sicherheitskomponente im OIDC-Authentifizierungsprozess ist.

Charles
Charles
Developer

Was ist eine Redirect URI?

Eine Redirect URI, auch bekannt als Reply URL, ist eine kritische Sicherheitskomponente im OIDC-Authentifizierungsprozess. Sie gibt die URL an, zu der Benutzer nach erfolgreicher Anmeldung über einen OIDC-Anbieter gesendet werden. Wichtiger ist, dass Ihre Anwendung dort den Autorisierungscode erhält, der benötigt wird, um Token zu erhalten.

Schauen Sie sich das Redirect URI Wiki für weitere Details an.

Was ist der Autorisierungscode-Flow?

Der Autorisierungscode-Flow (definiert in OAuth 2.0 RFC 6749, Abschnitt 4.1) ist eine grundlegende Authentifizierungsmethode in OIDC. Er beinhaltet den Austausch eines Autorisierungscodes gegen ein Zugriffstoken und optional ein Aktualisierungstoken. Dieser Flow eignet sich für Anwendungen, die ein Client-Geheimnis sicher verwalten können, wie serverseitige Webanwendungen.

Schauen Sie sich das Autorisierungscode-Flow Wiki für weitere Details an.

Wie funktioniert die Redirect URI im Autorisierungscode-Flow?

Im Autorisierungscode-Flow ist die Redirect URI das Ziel, zu dem der OIDC-Anbieter den Autorisierungscode sendet, nachdem der Benutzer erfolgreich authentifiziert wurde. Sie muss beim OIDC-Anbieter vorregistriert sein, um Sicherheit zu gewährleisten und unbefugte Umleitungen zu verhindern.

So können Sie eine Redirect URI in Logto Console registrieren: redirect-uri

Beim Start einer Anmeldung:

  1. Autorisierungsanfrage: Ihre Anwendung leitet den Benutzer an den Autorisierungsendpunkt des OIDC-Anbieters weiter, einschließlich Parametern wie client_id, response_type, scope und der redirect_uri.
  2. Benutzer-Authentifizierung: Der Benutzer authentifiziert sich beim OIDC-Anbieter.
  3. Autorisierungscode-Lieferung: Nach erfolgreicher Authentifizierung leitet der OIDC-Anbieter den Benutzer zur angegebenen redirect_uri weiter, einschließlich eines Autorisierungscodes als Abfrageparameter.

Der OIDC-Anbieter validiert die redirect_uri anhand der Liste der vorregistrierten URIs. Bei einer Abweichung wird ein invalid_redirect_uri Fehler zurückgegeben, um die Sicherheit zu verbessern, indem verhindert wird, dass unbefugte Endpunkte Token empfangen.

Beste Praktiken für Redirect URIs

In realen Anwendungsfällen ist eine gängige bewährte Praxis, eine dedizierte "Callback"-Seite zu deklarieren und einen Router / Deep Link zuzuordnen, der einen direkten Zugriff von extern ermöglicht. Dieser Link sollte als Redirect URI verwendet werden.

Angenommen, Sie haben eine Single-Page-Web-App, die auf https://my-app.com läuft, dann wird die Redirect URI üblicherweise als https://my-app.com/callback deklariert.

Oder wenn es sich um eine native mobile App handelt, beginnt die Redirect URI normalerweise mit einem benutzerdefinierten Schema, z. B. com.company://myapp/callback.

Weitere bewährte Praktiken umfassen:

  • Vermeiden Sie Wildcards: Verwenden Sie keine Wildcard-Muster in Redirect URIs. Listen Sie alle erlaubten URIs explizit auf, um unbefugten Zugriff zu verhindern.
  • Genau übereinstimmen: Stellen Sie sicher, dass die Redirect URI genau mit der beim OIDC-Anbieter registrierten übereinstimmt. Selbst ein abschließender Schrägstrich kann zu einer Abweichung führen.

Anmelderückruf behandeln

Um den Autorisierungscode, der an Ihre redirect_uri zurückgegeben wird, zu verarbeiten, befolgen Sie diese Schritte:

  1. Extrahieren Sie den Autorisierungscode: Abrufen des Code-Parameters aus der Abfragezeichenfolge der Redirect URI.

  2. Tauschen Sie den Autorisierungscode gegen Token aus: Erstellen Sie eine POST-Anfrage an den Token-Endpunkt des OIDC-Anbieters, einschließlich:

    • client_id: Die ID Ihrer Anwendung im OIDC-Anbieter
    • code: Der von der Redirect URI erhaltene Autorisierungscode
    • code_verifier: Eine zufällig generierte Zeichenfolge auf dem Client
    • redirect_uri: Die gleiche URI, die in der Autorisierungsanfrage verwendet wurde
    • grant_type: Der Typ des Grants, normalerweise authorization_code

Beispiel für einen Token-Austausch in JavaScript

Vereinfachen Sie den Code-Austauschprozess in Logto, indem Sie die Logto SDKs nutzen

Logto SDKs sind Entwicklungskits, die in einer bestimmten Programmiersprache oder einem Rahmen geschrieben sind, z. B. Logto React SDK, Next.js SDK und Swift SDK. Die Verwendung eines SDK kann die Dinge erheblich vereinfachen, indem Sie nur ein oder zwei Funktionen aufrufen.

Hier ist ein Beispiel für eine React "Callback"-Komponente mit dem offiziellen Logto React SDK:

SDK-Integrationsanleitungen finden Sie in den Logto Quick-Starts-Dokumenten.

Zusammenfassung: Warum es wichtig ist, Redirect URIs in OIDC zu beherrschen

Das Verständnis von Redirect URIs in OIDC mit dem Autorisierungscode-Flow ist entscheidend für die Sicherung und Optimierung Ihrer Authentifizierungsprozesse. Durch die Registrierung vertrauenswürdiger Redirect URIs und effizientes Handling von Anmelderückrufen können Sie ein nahtloses und sicheres Erlebnis für Ihre Benutzer gewährleisten und gleichzeitig Ihre Entwicklungsaufwände mit Logto SDKs vereinfachen.