Qu'est-ce que OAuth ?
- Glossaire IAM
- Qu'est-ce que OAuth ?
OAuth, ou L'autorisation ouverte, est une norme ouverte qui permet aux utilisateurs d'accorder à des applications tierces l'accès à leurs ressources sans les obliger à partager leurs identifiants de connexion. Au lieu que les utilisateurs exposent leurs mots de passe, OAuth autorise les applications tierces à utiliser des jetons d'accès éphémère pour accorder l'accès au nom de l'utilisateur.
Supposons par exemple que vous utilisiez une application tierce telle que Mailchimp, un outil de marketing par e-mail très répandu, et que vous souhaitiez importer vos contacts Google pour créer une liste d'e-mails. Au lieu de télécharger manuellement chaque contact dans Mailchimp, OAuth vous permet de connecter en toute sécurité votre compte Google à Mailchimp, en accordant un accès limité à vos contacts sans exposer votre mot de passe.
OAuth vs OAuth 2.0 : Quelle est la différence ?
OAuth, ou OAuth 1.0, exige que chaque demande d'autorisation soit signée par une signature cryptographique. Cela signifie que l'application tierce doit signer la demande avec une clé secret partagée, que le serveur d'autorisation doit reproduire pour vérifier la demande. Si les signatures cryptographiques garantissent que la demande n'a pas été modifiée, elles ne chiffrent pas les données, qui sont donc susceptibles d'être interceptées ou volées pendant leur transit.
OAuth 2.0 simplifie le processus d'autorisation en remplaçant les signatures cryptographiques par le chiffrement HTTPS, ce qui permet une transmission sécurisée des données de bout en bout. OAuth 2.0 utilise des jetons d'accès de courte durée et des jetons d'actualisation pour renforcer la sécurité en minimisant l'exposition des jetons. Il offre également une plus grande flexibilité en prenant en charge plusieurs flux d'autorisation différents en fonction du type d'application, tels que l'application web, l'application mobile et la communication de serveur à serveur.
| Caractéristique | OAuth 1.0 | OAuth 2.0 |
|---|---|---|
| Sécurité | Utilise des signatures cryptographiques avec une clé secret partagée pour chaque demande. Empêche la falsification mais pas l'interception. | Utilise le chiffrement HTTPS/TLS pour une transmission sécurisée des données de bout en bout |
| Système de jetons | Type de jeton unique sans expiration standard | Utilise des jetons d'accès et des jetons d'actualisation de courte durée pour une meilleure sécurité |
| Vérification des demandes | L'application et le serveur doivent générer des signatures correspondantes pour vérifier les demandes | TLS assure le chiffrement et la vérification des demandes |
| Flux d'autorisation | Un flux unique pour tous les cas d'utilisation | Flux multiples prenant en charge différents types d'applications (web, mobile, serveur à serveur) |
| Complexité de mise en œuvre | Complexe en raison des exigences en matière de signature cryptographique | Mise en œuvre plus simple grâce à l'utilisation de HTTPS |
| Utilisation moderne | Moins courant dans les applications modernes | La norme industrielle pour les applications modernes |
| Compromis de sécurité | Couche supplémentaire de sécurité de la signature, mais plus complexe | S'appuie sur la sécurité de TLS, mais est plus simple à mettre en œuvre correctement |
| Recommandé pour | Systèmes existants nécessitant une vérification de la signature | La plupart des API et applications modernes |
Bien que les options OAuth et OAuth 2.0 soient toutes deux pratiques, OAuth 2.0 est recommandé parce qu'il est plus facile à mettre en œuvre et couramment utilisé dans les applications modernes.
Comment fonctionne OAuth
Voici un guide étape par étape sur le fonctionnement d'OAuth 2.0 à l'aide du flux Authorization Code Grant :
- L'utilisateur initie l'autorisation : Un utilisateur souhaite accorder à une application tierce (appelée client) l'accès à ses ressources hébergées sur un serveur. Cela commence généralement lorsque l'utilisateur clique sur un bouton tel que Connexion à Google ou Connexion à GitHub sur l'application client.
-
Le client demande une autorisation :
Le client redirige l'utilisateur vers le terminal d'autorisation du serveur d'autorisation. La demande comprend des paramètres tels que :
client_id,redirect_uri,response_type=code,scopeetstate(pour la protection CSRF). L'utilisateur peut alors être invité à s'authentifier (s'il n'est pas déjà connecté) et à approuver ou refuser l'accès demandé. -
L'autorisation est accordée : Si l'utilisateur approuve la demande, le serveur d'autorisation redirige le navigateur de l'utilisateur vers le
redirect_uridu client. Un code d'autorisation est inclus dans l'URL avec le paramètre d'état, que le client doit vérifier pour s'assurer que la demande n'a pas été altérée ou interceptée. -
Le client demande un jeton d'accès :
Le client envoie une demande au terminal de jetons pour échanger le code d'autorisation contre des jetons. Cette demande doit inclure :
authorization_code,client_id,client_secret(si applicable),redirect_uri(doit correspondre à la demande originale) etgrant_type=authorization_code. - Le client reçoit des jetons d'accès et d'actualisation : Si la demande est validée, le serveur d'autorisation émet un jeton d'accès pour authentifier les demandes d'API et un jeton d'actualisation pour obtenir de nouveaux jetons d'accès lorsque le jeton actuel expire. Le client stocke ces jetons de manière sécurisée et utilise le jeton d'accès dans les demandes d'API.
-
Le client utilise un jeton d'actualisation :
Lorsque le jeton d'accès expire, le client peut en demander un nouveau en envoyant une demande d'actualisation du jeton au terminal de jeton. Pour obtenir un nouveau jeton d'accès, le client doit envoyer une nouvelle demande au terminal de jetons avec les critères suivants :
client_id,client_secret,refresh_token, etgrant_type=refresh_token.
Avantages d'OAuth
L'utilisation de OAuth offre plusieurs avantages, tels que la réduction du risque de vol des identifiants, l'amélioration de l'expérience utilisateur et la possibilité d'une authentification unique (SSO).
Réduit le risque de vol ou d'utilisation abusive des identifiants
OAuth élimine la nécessité pour les utilisateurs de partager leurs identifiants directement avec des applications tierces. Au lieu de cela, il s'appuie sur un serveur d'autorisation pour gérer l'accès, ce qui réduit considérablement le risque d'exposition de l'identifiant de connexion, en particulier dans le cas d'une violation de données. OAuth 2.0 utilise des jetons d'accès de courte durée qui accordent un accès limité à des ressources pendant une période déterminée. Ces jetons peuvent être révoqués par l'utilisateur à tout moment, ce qui garantit que l'accès reste temporaire et sous le contrôle de l'utilisateur.
Améliore l'expérience utilisateur
OAuth simplifie l'expérience utilisateur en lui permettant d'accéder à plusieurs comptes et ressources à l'aide de ses comptes existants, ce qui élimine la nécessité de créer des noms d'utilisateur et des mots de passe distincts pour chaque service. Cela permet d'accélérer l'accès et de réduire les difficultés liées à la gestion de plusieurs séries d'identifiants de connexion.
Permet l'authentification unique
OAuth active SSO en permettant aux utilisateurs de se connecter une fois à un fournisseur de services de confiance et d'utiliser ensuite plusieurs applications sans avoir à saisir à nouveau leurs identifiants. Tant que l'utilisateur reste connecté au fournisseur, il peut utiliser en toute transparence d'autres applications connectées au même compte. Par exemple, un utilisateur qui se connecte à Google peut également accéder à des applications qui s'appuient sur Google pour l'authentification.
Inconvénients d'OAuth
Malgré ses avantages, OAuth présente certains risques de sécurité, notamment la possibilité que les jetons soient compromis s'ils ne sont pas stockés ou transmis de manière sécurisée, et que les utilisateurs soient toujours vulnérables à une attaque d'hameçonnage.
Les jetons peuvent être compromis s'ils ne sont pas stockés en toute sécurité.
Les jetons d'accès et les jetons d'actualisation sont des cibles précieuses pour les cybercriminels car ils permettent d'accéder directement aux données et aux ressources des utilisateurs. Si les jetons sont stockés de manière inappropriée, les acteurs de la menace peuvent les compromettre, ce qui peut conduire à un accès non autorisé et à des comptes compromis.
Les jetons peuvent être compromis s'ils ne sont pas transmis de manière sécurisée.
Si les jetons sont envoyés via une connexion non sécurisée, par exemple en utilisant HTTP au lieu de HTTPS, ils peuvent être interceptés par une attaque de type Man-in-the-Middle (MITM). Une fois compromis, un jeton peut être utilisé pour obtenir un accès non autorisé aux ressources d'un utilisateur.
Vulnérable aux attaques d’hameçonnage
OAuth repose sur la redirection des utilisateurs vers un serveur d'autorisation pour accorder des permissions, mais ce processus peut être exploité dans des attaques de phishing. Dans une attaque d'hameçonnage, un attaquant incite les utilisateurs à saisir des identifiants sur une fausse page de connexion qui se fait passer pour le serveur d'autorisation légitime. Si les utilisateurs ne remarquent pas la différence, ils peuvent, sans le savoir, saisir leurs identifiants, ce qui permet aux hackers d'accéder à des comptes et à des données sensibles.