Français
  • uri de redirection
  • retour d'appel
  • code d'autorisation
  • flux de code
  • oidc
  • pkce

Comprendre l'URI de redirection et le flux de code d'autorisation dans OpenID Connect (OIDC)

Examinons de plus près l'URI de redirection car il s'agit d'un élément de sécurité crucial dans le processus d'authentification OIDC.

Charles
Charles
Developer

Qu'est-ce qu'un URI de redirection ?

Un URI de redirection, également connu sous le nom d'URL de réponse, est un élément de sécurité crucial dans le processus d'authentification OIDC. Il spécifie l'URL vers laquelle les utilisateurs sont envoyés après s'être connectés avec succès via un fournisseur OIDC. Plus important encore, c'est là que votre application reçoit le code d'autorisation nécessaire pour obtenir des jetons.

Consultez le wiki URI de redirection pour plus de détails.

Qu'est-ce que le flux de code d'autorisation ?

Le flux de code d'autorisation (défini dans OAuth 2.0 RFC 6749, section 4.1) est une méthode d'authentification fondamentale dans OIDC. Il implique l'échange d'un code d'autorisation contre un jeton d'accès et, éventuellement, un jeton de rafraîchissement. Ce flux est adapté aux applications qui peuvent maintenir en toute sécurité un secret client, telles que les applications web côté serveur.

Consultez le wiki du flux de code d'autorisation pour plus de détails.

Comment fonctionne l'URI de redirection dans le flux de code d'autorisation ?

Dans le flux de code d'autorisation, l'URI de redirection est la destination à laquelle le fournisseur OIDC envoie le code d'autorisation après que l'utilisateur s'est authentifié avec succès. Il doit être pré-enregistré auprès du fournisseur OIDC pour garantir la sécurité et empêcher les redirections non autorisées.

Voici comment vous pouvez enregistrer un URI de redirection dans Logto Console : redirect-uri

Lors de l'initiation d'une connexion :

  1. Requête d'autorisation : Votre application dirige l'utilisateur vers le point de terminaison d'autorisation du fournisseur OIDC, incluant des paramètres comme client_id, response_type, scope et redirect_uri.
  2. Authentification de l'utilisateur : L'utilisateur s'authentifie auprès du fournisseur OIDC.
  3. Livraison du code d'autorisation : Après une authentification réussie, le fournisseur OIDC redirige l'utilisateur vers le redirect_uri spécifié, incluant un code d'autorisation en tant que paramètre de requête.

Le fournisseur OIDC valide le redirect_uri par rapport à la liste des URIs pré-enregistrées. S'il y a une incohérence, une erreur invalid_redirect_uri sera renvoyée, renforçant la sécurité en empêchant les points de terminaison non autorisés de recevoir des jetons.

Bonnes pratiques pour les URIs de redirection

Dans des cas d'utilisation réels, une bonne pratique courante est de déclarer une page « Callback » dédiée et d'associer un routeur / lien profond permettant un accès direct depuis l'extérieur. Ce lien doit être utilisé comme l'URI de redirection.

En supposant que vous ayez une application web à page unique exécutée sur https://my-app.com, l'URI de redirection serait généralement déclaré comme https://my-app.com/callback

Ou s'il s'agit d'une application mobile native, l'URI de redirection commence généralement par un schéma personnalisé, par exemple com.company://myapp/callback

D'autres bonnes pratiques incluent :

  • Évitez les caractères génériques : N'utilisez pas de modèles de caractères génériques dans les URIs de redirection. Listez explicitement toutes les URIs autorisées pour éviter un accès non autorisé.
  • Correspondance exacte : Assurez-vous que l'URI de redirection correspond exactement à celui enregistré dans le fournisseur OIDC. Même une barre oblique finale peut causer une incohérence.

Gérer le retour d'appel de connexion

Pour gérer le code d'autorisation renvoyé à votre redirect_uri, suivez ces étapes :

  1. Extrait le code d'autorisation : Récupérez le paramètre code de la chaîne de requête de l'URI de redirection.

  2. Échangez le code d'autorisation contre des jetons : Composez une requête POST au point de terminaison des jetons du fournisseur OIDC, incluant :

    • client_id: L'ID de votre application dans le fournisseur OIDC
    • code: Le code d'autorisation reçu de l'URI de redirection
    • code_verifier: Une chaîne aléatoire générée sur le client
    • redirect_uri: Le même URI utilisé dans la requête d'autorisation
    • grant_type: Le type de subvention, généralement authorization_code

Exemple de requête d'échange de jeton en JavaScript

Simplifiez le processus d'échange de code dans Logto en utilisant les SDK Logto

Les SDK Logto sont des kits de développement écrits dans un langage ou un cadre de programmation spécifique, par exemple le SDK React Logto, le SDK Next.js et le SDK Swift. Utiliser un SDK peut grandement simplifier les choses en appelant simplement une ou deux fonctions.

Voici un exemple de composant React « Callback » utilisant le SDK React officiel Logto :

Les guides d'intégration des SDK sont disponibles dans la documentation Logto quick-starts.

Récapitulatif : pourquoi est-il important de maîtriser les URIs de redirection dans OIDC

Comprendre les URIs de redirection dans OIDC avec le flux de code d'autorisation est crucial pour sécuriser et optimiser vos processus d'authentification. En enregistrant des URIs de redirection de confiance et en gérant efficacement les retours d'appel de connexion, vous pouvez garantir une expérience fluide et sécurisée pour vos utilisateurs tout en simplifiant vos efforts de développement avec les SDK Logto.