Inzicht in Redirect URI en Autorisatiecode Stroom in OpenID Connect (OIDC)
Laten we eens nader kijken naar de redirect URI, aangezien dit een cruciaal beveiligingsonderdeel is in het OIDC-authenticatieproces.
Wat is een Redirect URI?
Een Redirect URI, ook wel een Reply URL genoemd, is een cruciaal beveiligingsonderdeel in het OIDC-authenticatieproces. Het specificeert de URL waar gebruikers naartoe worden gestuurd nadat ze succesvol zijn ingelogd via een OIDC-provider. Bovendien is het de locatie waar je applicatie de autorisatiecode ontvangt die nodig is om tokens te verkrijgen.
Bekijk de Redirect URI wiki voor meer details.
Wat is de Autorisatiecode Stroom?
De Autorisatiecode Stroom (gedefinieerd in OAuth 2.0 RFC 6749, sectie 4.1) is een fundamentele authenticatiemethode in OIDC. Het houdt in dat een autorisatiecode wordt ingeruild voor een toegangstoken en, optioneel, een ververstoken. Deze stroom is geschikt voor toepassingen die veilig een clientgeheim kunnen behouden, zoals server-side webtoepassingen.
Bekijk de Autorisatiecode Stroom wiki voor meer details.
Hoe werkt de Redirect URI in de Autorisatiecode Stroom?
In de Autorisatiecode Stroom is de Redirect URI de bestemming waar de OIDC-provider de autorisatiecode naartoe stuurt nadat de gebruiker succesvol is geauthenticeerd. Het moet vooraf worden geregistreerd bij de OIDC-provider om beveiliging te garanderen en ongeautoriseerde omleidingen te voorkomen.
Hier is hoe je een Redirect URI kunt registreren in Logto Console:
Bij het starten van een inlogproces:
- Autorisatieverzoek: Je applicatie leidt de gebruiker naar het autorisatie-eindpunt van de OIDC-provider, inclusief parameters zoals
client_id
,response_type
,scope
en deredirect_uri
. - Gebruikersauthenticatie: De gebruiker authenticeert zich bij de OIDC-provider.
- Levering van autorisatiecode: Bij succesvolle authenticatie leidt de OIDC-provider de gebruiker om naar de gespecificeerde
redirect_uri
, inclusief een autorisatiecode als queryparameter.
De OIDC-provider valideert de redirect_uri
aan de hand van de lijst met vooraf geregistreerde URI's. Bij een mismatch wordt een invalid_redirect_uri
-fout geretourneerd, wat de beveiliging verbetert door te voorkomen dat ongeauthoriseerde eindpunten tokens ontvangen.
Beste praktijken voor Redirect URIs
In praktijkgevallen is een veelgebruikte beste praktijk om een speciale "Callback"-pagina te declareren en een router / deeplink te koppelen die directe toegang mogelijk maakt van buitenaf. Deze link moet worden gebruikt als de redirect URI.
Stel dat je een single-page webapp hebt die draait op https://my-app.com
, dan zou de redirect URI meestal worden gedeclareerd als https://my-app.com/callback
Of als het een native mobiele app is, dan begint de redirect URI meestal met een aangepast schema, bijv. com.company://myapp/callback
Andere beste praktijken zijn onder andere:
- Vermijd wildcardpatronen: Gebruik geen wildcardpatronen in redirect URIs. Geef expliciet alle toegestane URI's op om ongeautoriseerde toegang te voorkomen.
- Exacte overeenkomst: Zorg ervoor dat de redirect URI exact overeenkomt met degene die is geregistreerd in de OIDC-provider. Zelfs een schuine streep aan het einde kan een mismatch veroorzaken.
Afhandelen van inlogcallback
Om de aan je redirect_uri
geretourneerde autorisatiecode te verwerken, volg je deze stappen:
-
Haal de autorisatiecode op: Haal de codeparameter op uit de querystring van de redirect URI.
-
Ruil de autorisatiecode in voor tokens: Stel een POST-verzoek samen naar het token-eindpunt van de OIDC-provider, inclusief:
client_id
: De ID van je applicatie in de OIDC-providercode
: De autorisatiecode ontvangen van de redirect URIcode_verifier
: Een willekeurige string die op de cliënt is gegenereerdredirect_uri
: Dezelfde URI die is gebruikt in het autorisatieverzoekgrant_type
: Het type toekenning, meestalauthorization_code
Voorbeeld van token-uitwisselingsverzoek in JavaScript
Vereenvoudig het proces van code-uitwisseling in Logto door gebruik te maken van de Logto SDK's
Logto SDK's zijn het ontwikkelingskit geschreven in een specifieke programmeertaal of framework, bijv. Logto React SDK, Next.js SDK en Swift SDK. Het gebruik van een SDK kan de zaken aanzienlijk vereenvoudigen door slechts een of twee functies aan te roepen.
Hier is een React "Callback"-componentvoorbeeld met de Logto officiële React SDK:
Integratiehandleidingen voor SDK's zijn te vinden in de Logto quick-starts docs.
Samenvatting: waarom het belangrijk is om Redirect URIs in OIDC te beheersen
Het begrijpen van Redirect URIs in OIDC met de autorisatiecode stroom is cruciaal voor het beveiligen en optimaliseren van je authenticatieprocessen. Door vertrouwde redirect URIs te registreren en inlogcallbacks efficiënt te verwerken, kun je een naadloze en veilige ervaring voor je gebruikers garanderen, terwijl je de ontwikkelingsefforts met Logto SDK's vereenvoudigt.