Vous l’avez certainement remarqué : ce fameux bouton « Se connecter avec Google/Facebook/LinkedIn…etc » qui apparaît lorsque vous devez vous identifier sur un nouveau site web. Peut-être vous êtes-vous demandé quel intérêt il y a à utiliser vos identifiants Google/Facebook/LinkedIn ou autres pour accéder à ce nouveau site, et quelle relation existe entre ces deux plateformes apparemment sans rapport.
[!Success]Ecoutez la conversation !
Ce mécanisme s’appelle l’authentification OAuth. Elle vous permet de vous identifier sur un site en utilisant les informations d’identification d’un autre service sur lequel vous êtes déjà inscrit, comme Google notamment. Examinons en détail comment fonctionne ce système.
OAuth, acronyme de Open Authorization, est un protocole d’autorisation standard qui permet à une application tierce d’accéder aux données d’un utilisateur sans que celui-ci ait à partager son mot de passe. Ce mécanisme d’autorisation est désormais largement adopté par les géants du web comme Google, Facebook, et Amazon pour faciliter les connexions et le partage de données entre différents services tout en maintenant un haut niveau de sécurité. Dans ce rapport, nous explorerons en détail ce qu’est OAuth, comment il fonctionne, et pourquoi il est devenu indispensable dans l’écosystème numérique actuel.
Définition et principes fondamentaux d’OAuth
OAuth est un protocole d’autorisation standardisé qui permet aux utilisateurs d’autoriser une application tierce à accéder à leurs données stockées sur un autre service sans jamais avoir à partager leurs identifiants de connexion. Développé en 2007 et standardisé en 2010, OAuth 2.0 (la version actuelle) a été adopté en 2012, remplaçant OAuth 1.0 pour devenir la norme industrielle de facto pour l’autorisation en ligne16.
Ce protocole résout un problème fondamental de sécurité numérique : permettre l’accès délégué à des ressources protégées sans compromettre les informations d’identification de l’utilisateur. OAuth permet ainsi ce qu’on appelle un « accès désigné sécurisé », où l’utilisateur garde le contrôle sur les permissions qu’il accorde1418.
Comment distinguer OAuth des autres protocoles
Il est important de noter qu’OAuth se concentre spécifiquement sur l’autorisation (qui a accès à quoi) et non sur l’authentification (prouver l’identité d’un utilisateur). Cette distinction est fondamentale pour comprendre la place d’OAuth dans l’écosystème de sécurité numérique18.
À la différence d’autres protocoles comme OpenID (qui concerne l’authentification) ou SAML (Security Assertion Markup Language, qui peut gérer à la fois l’authentification et l’autorisation), OAuth est spécifiquement conçu pour gérer les autorisations d’accès aux ressources14.
Comment fonctionne OAuth : Le mécanisme expliqué
Le fonctionnement d’OAuth implique plusieurs étapes qui assurent la sécurité et une autorisation appropriée. Ce processus, souvent appelé « flux OAuth », peut être décomposé en plusieurs étapes clés11.
La demande d’autorisation
Le processus commence lorsqu’un utilisateur souhaite qu’une application tierce accède à ses données. L’application redirige alors l’utilisateur vers le serveur d’autorisation (par exemple, Google ou Facebook) où il devra approuver l’accès demandé1119.
Cette redirection inclut plusieurs paramètres importants : l’identifiant du client (client ID), l’étendue de l’accès demandé (scope), l’URI de redirection (redirect URI) et parfois un paramètre d’état pour prévenir les attaques CSRF (Cross-Site Request Forgery)19.
Authentification et consentement de l’utilisateur
Une fois redirigé, l’utilisateur s’authentifie auprès du serveur d’autorisation et examine les permissions demandées par l’application tierce. C’est à ce moment que l’utilisateur donne ou refuse son consentement pour l’accès à ses données1119.
Génération du code d’autorisation
Après l’approbation de l’utilisateur, le serveur d’autorisation génère un code d’autorisation temporaire et redirige l’utilisateur vers l’application tierce en incluant ce code dans l’URI de redirection1719.
Échange du code contre un jeton d’accès
L’application utilise ensuite ce code d’autorisation, combiné avec son secret client, pour demander un jeton d’accès (access token) auprès du serveur d’autorisation. Ce jeton d’accès est la clé qui permettra à l’application d’accéder aux ressources protégées de l’utilisateur1517.
Utilisation du jeton d’accès
Avec le jeton d’accès en main, l’application peut maintenant effectuer des requêtes vers les API ou ressources protégées au nom de l’utilisateur, sans jamais avoir eu connaissance de ses identifiants de connexion15.
Une analogie pour comprendre OAuth
Pour mieux comprendre le fonctionnement d’OAuth, considérons cette analogie avec la vie réelle11:
Imaginez que vous habitez dans une maison avec un ami. Un jour, vous oubliez votre carte d’accès à la maison en partant travailler. Comme vous en avez besoin d’urgence, vous demandez à un collègue d’aller la récupérer chez vous. Cependant, votre collègue ne connaît pas votre ami, et votre ami ne reconnaît pas votre collègue. Pour résoudre ce problème, vous donnez à votre collègue un code secret que votre ami pourra vérifier. Votre ami confirme également avec vous avant de remettre la carte. Ce scénario reflète parfaitement le processus OAuth11:
- Vous (l’utilisateur) êtes le propriétaire des données
- Votre ami (le serveur de ressources) est l’entité qui détient les données
- Votre collègue (l’application tierce) est le service qui demande l’accès aux données
- Le code secret (le code d’autorisation) est le code de vérification nécessaire pour accorder l’accès11
Les différents flux d’autorisation OAuth
OAuth 2.0 définit plusieurs flux d’autorisation adaptés à différents types d’applications. Le plus couramment utilisé est le flux de code d’autorisation (Authorization Code Flow)121519.
Le flux de code d’autorisation
Ce flux est particulièrement adapté aux applications confidentielles, comme les applications web traditionnelles côté serveur, où le secret du client peut être stocké en toute sécurité. Il s’agit d’une méthode robuste qui suit le processus en plusieurs étapes décrit précédemment1519.
Pour renforcer la sécurité, particulièrement pour les applications mobiles et les applications à page unique (SPA), ce flux peut être combiné avec PKCE (Proof Key for Code Exchange) qui ajoute une couche de protection supplémentaire contre les interceptions de code d’autorisation15.
Pourquoi utiliser OAuth : Avantages et cas d’usage
OAuth présente de nombreux avantages qui expliquent sa large adoption dans l’écosystème numérique actuel.
Sécurité renforcée
En évitant le partage direct des mots de passe, OAuth réduit considérablement les risques de sécurité. Si un service tiers subit une violation de données, les identifiants de l’utilisateur restent protégés1418.
Expérience utilisateur améliorée
OAuth facilite les connexions en un clic, permettant aux utilisateurs de s’identifier auprès d’un service web sans avoir à saisir leurs identifiants à chaque fois. Cela élimine également la nécessité de créer de nouveaux comptes pour chaque service utilisé1418.
Contrôle granulaire des permissions
OAuth permet aux utilisateurs de contrôler précisément quelles données ils partagent et quelles actions une application tierce peut effectuer en leur nom. Ces permissions peuvent également être révoquées à tout moment16.
Cas d’usage courants
Les cas d’usage les plus fréquents d’OAuth incluent:
- Se connecter à un site web en utilisant un compte Google, Facebook ou autre (« Login with… »)
- Autoriser une application à publier sur vos réseaux sociaux (comme tweeter un article depuis un site d’actualités)
- Permettre à une application d’accéder à vos photos, contacts ou documents stockés sur un service cloud
- Connecter des services entre eux (par exemple, synchroniser votre calendrier avec une application de planification)1418
Conclusion
OAuth représente une avancée majeure dans la gestion sécurisée des autorisations en ligne. En permettant un accès délégué aux ressources sans compromettre les informations d’identification des utilisateurs, ce protocole a transformé la manière dont les applications interagissent entre elles sur Internet.
À l’ère où les préoccupations concernant la confidentialité et la sécurité des données sont omniprésentes, OAuth offre un équilibre entre la commodité pour l’utilisateur et la protection des données. Sa large adoption par les géants de la technologie témoigne de sa fiabilité et de son efficacité.
Comprendre les principes d’OAuth est désormais essentiel non seulement pour les développeurs qui créent des applications connectées, mais aussi pour les utilisateurs qui accordent des permissions d’accès à leurs données personnelles. Alors que l’écosystème numérique continue d’évoluer, OAuth reste un pilier fondamental de l’infrastructure d’autorisation moderne, contribuant à un web plus sécurisé et plus interopérable.
[!Note]
Je vois un inconvénient à ce mécanisme: je ne sais jamais si je vais sur un site si j’ai déjà été connecté avec Oauth ou si j’ai un mot de passe spécifique pour ce site…
Citations:
- OAuth — Wikipédia
- OAuth | Ping Identity
- Fluxo de credenciais do cliente OAuth 2.0 na plataforma de identidade da Microsoft - Microsoft identity platform | Microsoft Learn
- OAuth vs. OAuth 2: differences + what you need to know — WorkOS
- https://auth0.com/docs/get-started/authentication-and-authorization-flow/authorization-code-flow
- https://learn.microsoft.com/pt-br/entra/identity-platform/v2-oauth2-implicit-grant-flow
- https://cloud.google.com/apigee/docs/api-platform/security/oauth/using-jwt-oauth
- https://supertokens.com/blog/openid-connect-vs-oauth2
- https://openclassrooms.com/fr/courses/5683681-secure-your-web-application-with-spring-security/6695836-identify-the-advantages-and-applications-of-oauth-2.0
- https://dev.to/devcorner/understanding-oauth-secure-authentication-simplified-1md2
- https://www.varonis.com/pt-br/blog/what-is-oauth
- https://oauth.net/2/grant-types/authorization-code/
- https://openclassrooms.com/en/courses/5683681-secure-your-web-application-with-spring-security/6695856-configure-oauth-2.0-servers
- https://www.proofpoint.com/fr/threat-reference/oauth
- https://learn.microsoft.com/en-us/entra/identity-platform/v2-oauth2-auth-code-flow
- https://auth0.com/fr/intro-to-iam/what-is-oauth-2
- https://www.oauth.com/oauth2-servers/server-side-apps/authorization-code/
- https://www.fortinet.com/fr/resources/cyberglossary/oauth
- https://auth.wiki/fr/authorization-code-flow
- https://www.ibm.com/br-pt/think/topics/oauth
- https://fr.linkedin.com/pulse/comment-fonctionne-le-standard-oauth-2-quest-ce-quil-peut-jean-silga
- https://developers.google.com/identity/protocols/oauth2/javascript-implicit-flow
- https://fusionauth.io/articles/oauth/differences-between-oauth-2-oauth-2-1
- https://developers.google.com/identity/protocols/oauth2/web-server
- https://www.okta.com/fr/blog/2022/09/lauthentification-oauth2-definition-et-fonctionnement/
- https://oauth.net/2/
- https://www.descope.com/learn/post/oauth
- https://pt.wikipedia.org/wiki/OAuth
- https://auth0.com/pt/intro-to-iam/what-is-oauth-2
- https://docs.sensedia.com/pt/api-platform-guide/4.6.x.x/other-info/oauth20.html
- https://en.wikipedia.org/wiki/OAuth
- https://oauth.net/2/grant-types/implicit/
- https://datatracker.ietf.org/doc/html/rfc9068
- https://workos.com/blog/oauth-vs-openid
- https://docs.x.com/resources/fundamentals/authentication/oauth-2-0/authorization-code
- https://www.youtube.com/watch?v=_2jBz06oMh4
- https://oauth.net/2/jwt-access-tokens/
- https://www.descope.com/blog/post/openid-vs-oauth
- https://auth0.com/docs/get-started/authentication-and-authorization-flow/which-oauth-2-0-flow-should-i-use
- https://frontegg.com/blog/oauth-vs-jwt
- https://stackoverflow.com/questions/1087031/whats-the-difference-between-openid-and-oauth
- https://console.openapi.com/fr/apis/oauth/documentation
- https://www.upguard.com/blog/oauth
- https://developers.google.com/classroom/guides/auth
- https://auth0.com/fr/intro-to-iam/what-is-oauth-2
- https://www.fortinet.com/resources/cyberglossary/oauth
- https://docs.openwebui.com/features/sso/
- https://developers.google.com/classroom/add-ons/walkthroughs/sign-in?hl=fr
- https://www.loginradius.com/blog/identity/what-is-oauth/
- https://www.techtarget.com/searchapparchitecture/definition/OAuth
- https://www.youtube.com/watch?v=TbUK-RFFDv8
- https://pt.scribd.com/document/648519620/Creez-une-connexion-securisee-pour-votre-application-Spring-avec-OAuth-2-0-OpenClassrooms
- https://www.ibm.com/es-es/think/topics/oauth
- https://platzi.com/cursos/oauth/
- https://openclassrooms.com/en/courses/5683681-secure-your-web-application-with-spring-security/6695836-identify-the-advantages-applications-of-oauth-2-0
- https://grafikart.fr/tutoriels/oauth2-php-google-1171
- https://docs.moodle.org/dev/OAuth_2_API
- Je l’utilise fréquemment
- Je l’utilise parfois
- Je ne l’utilise jamais
- Je n’ai pas confiance