Logo Logo
GitHub Designed by Logto

Qu’est-ce que le flux implicite (implicit flow) ?

Le flux implicite (implicit flow) d’OAuth 2.0 est une méthode d’authentification qui permet aux applications uniquement clientes (comme les SPAs et les applications natives) de recevoir des jetons directement via des fragments d’URL depuis le serveur d’autorisation sans fournir de secret client.

Le flux implicite (implicit flow) est conçu pour les applications uniquement clientes, car elles fonctionnent entièrement dans le navigateur ou sur l’appareil de l’utilisateur et ne peuvent pas stocker en toute sécurité les secrets clients.

Le flux implicite (implicit flow) a été officiellement déprécié dans OAuth 2.1 pour des raisons de sécurité (qui seront mentionnées ci-dessous). Les applications uniquement clientes devraient maintenant utiliser le Flux de code d'autorisation (Authorization code flow) avec l’extension Clé de preuve pour l'échange de code (Proof Key for Code Exchange, PKCE) à la place.

Comment fonctionne le flux implicite (implicit flow) ?

Les principales étapes du flux implicite (implicit flow) sont les suivantes :

Remarques :

  • Le client n’a besoin de fournir qu’un client_id dans la demande d’autorisation, sans nécessiter de client_secret.
    Cela est dû au fait que ces clients ne peuvent pas stocker en toute sécurité les secrets, donc ce flux ne nécessite pas de secret client.

  • Le paramètre response_type est défini sur token, indiquant au serveur d’autorisation de retourner directement le jeton d’accès au lieu d’un code d’autorisation.
    Dans OIDC ( OpenID Connect (OIDC) ), le response_type est soit id_token soit id_token token, et le service d’auth retournera les jetons correspondants en fonction des différents types de réponse.

  • Le jeton est retourné directement dans le fragment d’URL. Cela signifie que le jeton est exposé dans l’URL et peut être facilement accessible par d’autres applications ou scripts.

Le flux implicite (implicit flow) est-il sécurisé ?

Non, le flux implicite (implicit flow) dans OAuth 2.0 est généralement considéré comme moins sécurisé que d’autres flux comme le flux de code d’autorisation.

Il n’est pas recommandé pour la plupart des cas d’utilisation en raison de plusieurs vulnérabilités :

  • Exposition du jeton dans l’URL

    • Les jetons d’accès apparaissent directement dans l’URL du navigateur (après le symbole #)
    • Ces jetons peuvent être :
      • Enregistrés dans l’historique du navigateur
      • Fuités via les en-têtes de référent
      • Capturés par du code JavaScript malveillant sur la même page
  • Pas d’authentification du client

    • L’application cliente n’a pas besoin de prouver son identité
    • Cela signifie que quiconque connaît le client_id peut prétendre être un client légitime
  • Pas de jetons de rafraîchissement

    • Ce flux ne prend pas en charge les jetons de rafraîchissement
    • Les utilisateurs doivent se reconnecter lorsque les jetons d’accès expirent
    • Pour éviter des connexions fréquentes, les utilisateurs pourraient stocker les jetons de manière non sécurisée
  • Vulnérable aux attaques XSS

    • Tous les jetons sont gérés dans le navigateur
    • Si le site web subit une attaque XSS (Cross-Site Scripting)
    • Le code JavaScript des attaquants peut facilement voler ces jetons

En raison de ces préoccupations de sécurité, le flux implicite (implicit flow) a été déprécié dans OAuth 2.1 . Les applications uniquement clientes devraient maintenant utiliser le Flux de code d'autorisation (Authorization code flow) avec l’extension Clé de preuve pour l'échange de code (Proof Key for Code Exchange, PKCE) à la place.

Vous pouvez consulter Qu’est-ce que PKCE : des concepts de base à une compréhension approfondie pour apprendre comment PKCE protège le flux de code d’autorisation pour les applications uniquement clientes.

Voir aussi