Verständnis der Redirect-URI und des Autorisierungscode-Flows in OpenID Connect (OIDC)
Werfen wir einen genaueren Blick auf die Redirect-URI, da sie ein kritisches Sicherheitskomponente im OIDC-Authentifizierungsprozess ist.
Was ist eine Redirect-URI?
Eine Redirect-URI, auch als Antwort-URL bekannt, ist ein kritisches Sicherheitskomponente im OIDC-Authentifizierungsprozess. Sie gibt die URL an, an die Benutzer nach erfolgreicher Anmeldung über einen OIDC-Anbieter gesendet werden. Noch wichtiger ist, dass dort Ihre Anwendung den Autorisierungscode empfängt, der benötigt wird, um Tokens zu erhalten.
Weitere Details finden Sie im Auth Wiki > Redirect URI.
Was ist der Autorisierungscode-Flow?
Der Autorisierungscode-Flow (definiert in OAuth 2.0 RFC 6749, Abschnitt 4.1) ist eine grundlegende Authentifizierungsmethode in OIDC. Es beinhaltet den Austausch eines Autorisierungscodes gegen ein Zugriffstoken und optional ein Refresh-Token. Dieser Flow ist geeignet für Anwendungen, die ein Client-Geheimnis sicher verwalten können, wie z.B. serverseitige Webanwendungen.
Weitere Details finden Sie im Auth Wiki > Authorization Code Flow.
Wie funktioniert die Redirect-URI im Autorisierungscode-Flow?
Im Autorisierungscode-Flow ist die Redirect-URI das Ziel, zu dem der OIDC-Anbieter den Autorisierungscode nach erfolgreicher Authentifizierung des Benutzers sendet. Sie muss beim OIDC-Anbieter vorregistriert werden, um Sicherheit zu gewährleisten und unbefugte Umleitungen zu verhindern.
So können Sie eine Redirect-URI in der Logto-Konsole registrieren:
Bei der Initiierung einer Anmeldung:
- Autorisierungsanfrage: Ihre Anwendung leitet den Benutzer zum Autorisierungsendpunkt des OIDC-Anbieters, einschließlich Parameter wie
client_id
,response_type
,scope
undredirect_uri
. - Benutzerautentifizierung: Der Benutzer authentifiziert sich beim OIDC-Anbieter.
- Lieferung des Autorisierungscodes: Bei erfolgreicher Authentifizierung leitet der OIDC-Anbieter den Benutzer zur angegebenen
redirect_uri
und fügt einen Autorisierungscode als Abfrageparameter hinzu.
Der OIDC-Anbieter überprüft die redirect_uri
gegen die Liste der vorregistrierten URIs. Wenn es eine Abweichung gibt, wird ein invalid_redirect_uri
Fehler zurückgegeben, um die Sicherheit zu erhöhen, indem verhindert wird, dass unbefugte Endpunkte Tokens empfangen.
Best Practices für Redirect-URIs
In realen Anwendungsfällen ist es gängige Praxis, eine dedizierte "Callback"-Seite zu deklarieren und einen Router / Deep Link zuzuweisen, der den 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 lautet die Redirect-URI normalerweise https://my-app.com/callback
.
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 Best Practices umfassen:
- Keine Platzhalter verwenden: Verwenden Sie keine Platzhaltermuster in Redirect-URIs. Listen Sie explizit alle erlaubten URIs auf, um unbefugten Zugriff zu verhindern.
- Exakte Übereinstimmung: Stellen Sie sicher, dass die Redirect-URI genau mit der beim OIDC-Anbieter registrierten übereinstimmt. Sogar ein abschließender Schrägstrich kann eine Abweichung verursachen.
Handling der Anmelde-Callback
Um den zurückgegebenen Autorisierungscode an Ihre redirect_uri
zu verarbeiten, folgen Sie diesen Schritten:
-
Extrahieren Sie den Autorisierungscode: Holen Sie den Code-Parameter aus der Abfragezeichenfolge der Redirect-URI.
-
Tauschen Sie den Autorisierungscode gegen Tokens aus: Stellen Sie eine POST-Anfrage an den Token-Endpunkt des OIDC-Anbieters zusammen, einschließlich:
client_id
: Die ID Ihrer Anwendung im OIDC-Anbietercode
: Der von der Redirect-URI erhaltene Autorisierungscodecode_verifier
: Ein auf dem Client generierter Zufallsstringredirect_uri
: Die gleiche URI, die in der Autorisierungsanfrage verwendet wurdegrant_type
: Der Typ des Grants, normalerweiseauthorization_code
Beispiel für eine Token-Austauschanfrage in JavaScript
Vereinfachen des Codeaustauschprozesses in Logto durch Nutzung der Logto SDKs
Logto SDKs sind das Entwicklungskit, das in einer bestimmten Programmiersprache oder einem bestimmten Framework geschrieben ist, z.B. Logto React SDK, Next.js SDK und Swift SDK. Die Verwendung eines SDK kann die Dinge erheblich vereinfachen, indem Sie nur eine oder zwei Funktionen aufrufen.
Hier ist ein Beispiel für eine React "Callback" Komponente, die das offizielle Logto-React-SDK verwendet:
Anleitungen zur SDK-Integration finden Sie in den Logto Docs > Quick-starts.
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 von vertrauenswürdigen Redirect-URIs und das effiziente Handling von Anmelde-Callbacks können Sie Ihren Benutzern ein nahtloses und sicheres Erlebnis bieten und gleichzeitig Ihre Entwicklungsbemühungen mit Logto SDKs vereinfachen.