Comprendre l'URI de redirection et le flux d'autorisation dans OpenID Connect (OIDC)
Examinons de plus près l'URI de redirection car c'est un composant de sécurité essentiel dans le processus d'authentification OIDC.
Qu'est-ce qu'une URI de redirection ?
Une URI de redirection, également connue sous le nom d'URL de réponse, est un composant de sécurité essentiel dans le processus d'authentification OIDC. Elle 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 les jetons.
Consultez le Wiki Auth > 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 convient aux applications pouvant maintenir en toute sécurité un secret client, comme les applications web côté serveur.
Consultez le Wiki Auth > Flux de code d'autorisation pour plus de détails.
Comment l'URI de redirection fonctionne-t-elle 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 se soit authentifié avec succès. Elle doit être préenregistrée avec le fournisseur OIDC pour assurer la sécurité et empêcher les redirections non autorisées.
Voici comment vous pouvez enregistrer une URI de redirection dans Logto Console :
Lors de l'initialisation d'une connexion :
- Demande d'autorisation : Votre application dirige l'utilisateur vers le point de terminaison d'autorisation du fournisseur OIDC, en incluant des paramètres comme
client_id
,response_type
,scope
etredirect_uri
. - Authentification de l'utilisateur : L'utilisateur s'authentifie avec le fournisseur OIDC.
- Livraison du code d'autorisation : Après une authentification réussie, le fournisseur OIDC redirige l'utilisateur vers le
redirect_uri
spécifié, en 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 URI préenregistrées. En cas de désaccord, une erreur invalid_redirect_uri
sera retournée, améliorant la sécurité en empêchant les points de terminaison non autorisés de recevoir les jetons.
Bonnes pratiques pour les URI de redirection
Dans les 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 qui permet un accès direct de l'extérieur. Ce lien doit être utilisé comme URI de redirection.
En supposant que vous ayez une application web à page unique qui fonctionne sur https://my-app.com
, alors généralement l'URI de redirection serait déclarée comme https://my-app.com/callback
Ou s'il s'agit d'une application mobile native, alors 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 jokers : N'utilisez pas de modèles joker dans les URI de redirection. Listez explicitement toutes les URI autorisées pour éviter les accès non autorisés.
- Correspond exactement : Assurez-vous que l'URI de redirection correspond exactement à celle enregistrée dans le fournisseur OIDC. Même une barre oblique finale peut provoquer un désaccord.
Gérer le callback de connexion
Pour gérer le code d'autorisation retourné à votre redirect_uri
, suivez ces étapes :
-
Extraire le code d'autorisation : Récupérez le paramètre code de la chaîne de requête de l'URI de redirection.
-
Échanger le code d'autorisation contre des jetons : Composez une requête POST vers le point de terminaison de jeton du fournisseur OIDC, en incluant :
client_id
: L'ID de votre application dans le fournisseur OIDCcode
: Le code d'autorisation reçu de l'URI de redirectioncode_verifier
: Une chaîne aléatoire générée sur le clientredirect_uri
: La même URI utilisée dans la demande d'autorisationgrant_type
: Le type de subvention, généralementauthorization_code
Exemple de demande d'échange de jetons en JavaScript
Simplifiez le processus d'échange de code dans Logto en utilisant les SDK Logto
Les SDK Logto sont le kit de développement écrit dans un langage de programmation ou framework spécifique, par exemple Logto React SDK, Next.js SDK et Swift SDK. 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 de Logto :
Les guides d'intégration des SDK sont disponibles dans les Docs Logto > Démarrages rapides.
Récapitulatif : pourquoi est-il important de maîtriser les URI de redirection dans OIDC
Comprendre les URI 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 URI de redirection de confiance et en gérant efficacement les callbacks de connexion, vous pouvez assurer une expérience fluide et sécurisée pour vos utilisateurs tout en simplifiant vos efforts de développement avec les SDK Logto.