Nederlands
  • redirect uri
  • callback
  • authorisatiecode
  • code flow
  • oidc
  • pkce

Begrijpen van Redirect URI en Autorisatiecodeflow in OpenID Connect (OIDC)

Laten we eens nader kijken naar de redirect URI, aangezien het een cruciaal beveiligingsonderdeel is in het OIDC-authenticatieproces.

Charles
Charles
Developer

Wat is een Redirect URI?

Een Redirect URI, ook wel bekend als een Reply URL, is een cruciaal beveiligingsonderdeel in het OIDC-authenticatieproces. Het specificeert de URL waar gebruikers naartoe worden gestuurd na succesvol inloggen via een OIDC-provider. Belangrijker nog, het is waar je applicatie de autorisatiecode ontvangt die nodig is om tokens te verkrijgen.

Bekijk de Auth Wiki > Redirect URI voor meer details.

Wat is de Autorisatiecodeflow?

De Autorisatiecodeflow (gedefinieerd in OAuth 2.0 RFC 6749, sectie 4.1) is een fundamentele authenticatiemethode in OIDC. Het omvat het uitwisselen van een autorisatiecode voor een toegangstoken en optioneel een vernieuwingstoken. Deze flow is geschikt voor applicaties die veilig een clientgeheim kunnen onderhouden, zoals server-side webapplicaties.

Bekijk de Auth Wiki > Autorisatiecodeflow voor meer details.

Hoe werkt de Redirect URI in de Autorisatiecodeflow?

In de Autorisatiecodeflow is de Redirect URI de bestemming waar de OIDC-provider de autorisatiecode naartoe stuurt na succesvolle authenticatie van de gebruiker. Het moet vooraf geregistreerd zijn bij de OIDC-provider om beveiliging te garanderen en ongeautoriseerde omleidingen te voorkomen.

Hier is hoe je een Redirect URI kunt registreren in de Logto Console: redirect-uri

Bij het starten van een sign-in:

  1. Autorisatieaanvraag: Je applicatie stuurt de gebruiker naar het autorisatie-eindpunt van de OIDC-provider, inclusief parameters zoals client_id, response_type, scope en de redirect_uri.
  2. Gebruikersauthenticatie: De gebruiker authenticeert zich bij de OIDC-provider.
  3. Levering van de autorisatiecode: Bij succesvolle authenticatie stuurt de OIDC-provider de gebruiker door naar de gespecificeerde redirect_uri, inclusief een autorisatiecode als queryparameter.

De OIDC-provider valideert de redirect_uri tegen de lijst met vooraf geregistreerde URI's. Als er een mismatch is, zal een invalid_redirect_uri-fout worden geretourneerd, waarmee de beveiliging wordt verbeterd door te voorkomen dat ongeautoriseerde eindpunten tokens ontvangen.

Beste praktijken voor Redirect URI's

In praktijkgevallen is een algemene beste praktijk om een toegewijde "Callback"-pagina te declareren en een router / dieplink te koppelen die directe toegang vanaf buiten toestaat. 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 wordt de redirect URI meestal gedeclareerd als https://my-app.com/callback

Of als het een native mobiele app is, begint de redirect URI meestal met een aangepast schema, bijvoorbeeld com.company://myapp/callback

Andere beste praktijken omvatten:

  • Vermijd jokertekens: Gebruik geen jokerpatronen in redirect URI's. Noem expliciet alle toegestane URI's om ongeautoriseerde toegang te voorkomen.
  • Exact overeenkomen: Zorg ervoor dat de redirect URI exact overeenkomt met die geregistreerd in de OIDC-provider. Zelfs een afsluitende schuine streep kan een mismatch veroorzaken.

Afhandelen van sign-in callback

Om de autorisatiecode die wordt geretourneerd naar je redirect_uri af te handelen, volg je deze stappen:

  1. Extraheer de autorisatiecode: Haal de codeparameter op uit de queryreeks van de redirect URI.

  2. Wissel de autorisatiecode in voor tokens: Stel een POST-verzoek op naar het token-eindpunt van de OIDC-provider, inclusief:

    • client_id: De ID van je applicatie in de OIDC-provider
    • code: De autorisatiecode ontvangen van de redirect URI
    • code_verifier: Een willekeurige string gegenereerd op de client
    • redirect_uri: Dezelfde URI gebruikt in de autorisatieaanvraag
    • grant_type: Het type verlening, meestal authorization_code

Voorbeeld tokenuitwisselingsverzoek in JavaScript

Vereenvoudig het code-uitwisselingsproces in Logto door gebruik te maken van de Logto SDK's

Logto SDK's zijn het ontwikkelingspakket geschreven in een specifieke programmeertaal of framework, bijvoorbeeld 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 voorbeeld van een React "Callback"-component die de officiële Logto React SDK gebruikt:

Integratiehandleidingen voor SDK's zijn te vinden op de Logto Docs > Quick-starts.

Samenvatting: waarom het belangrijk is om Redirect URI's in OIDC te beheersen

Het begrijpen van Redirect URI's in OIDC met de autorisatiecodeflow is van cruciaal belang voor het beveiligen en optimaliseren van je authenticatieprocessen. Door vertrouwde redirect URI's te registreren en sign-in callbacks efficiënt af te handelen, kun je een naadloze en veilige ervaring bieden aan je gebruikers terwijl je je ontwikkelingsinspanningen vereenvoudigt met Logto SDK's.