Aller au contenu

OAuth 2.0 : Open Authorization 2.0

Sécurité

OAuth 2.0 : Open Authorization 2.0. « Autorisation ouverte », par analogie avec la clé de voiturier qui démarre la voiture sans ouvrir le coffre ni la boîte à gants. Ce protocole de délégation permet à une application d'agir sur un compte au nom de son propriétaire, avec des droits bornés, sans jamais voir son mot de passe.

Diagramme de séquence OAuth 2.0 entre quatre acteurs : Utilisateur, Client, Serveur d'autorisation et Serveur de ressources. 1, l'utilisateur demande au client l'accès à une ressource. 2, le client redirige vers le serveur d'autorisation avec les portées et le code_challenge. 3, l'utilisateur s'authentifie et donne son consentement auprès du serveur d'autorisation. 4, celui-ci renvoie au client un code d'autorisation par redirection. 5, le client envoie le code et le code_verifier. 6, si le code et le vérificateur sont valides, le serveur d'autorisation remet un jeton d'accès au client. 7, le client adresse au serveur de ressources une requête avec ce jeton d'accès.

Quatre rôles : La norme (RFC 6749) distingue le propriétaire de la ressource, le client qui demande l'accès, le serveur d'autorisation qui délivre les jetons et le serveur de ressources qui les vérifie. Le mot de passe ne transite qu'entre l'utilisateur et le serveur d'autorisation.

Jetons et portées : Le client reçoit un jeton d'accès à courte durée de vie, limité à des portées (scopes) précises, et parfois un jeton de rafraîchissement pour en obtenir un nouveau sans redemander le consentement. On révoque un jeton sans toucher au mot de passe.

Autorisation, pas authentification : OAuth 2.0 dit ce qu'un client a le droit de faire, pas qui est l'utilisateur ; c'est OpenID Connect qui ajoute l'identité par-dessus. Se servir d'un jeton d'accès comme preuve d'identité revient à accepter un ticket de vestiaire comme pièce d'identité : ça marche, jusqu'au jour où quelqu'un d'autre le tend au guichet.

Flux recommandé : Le flux par code d'autorisation, protégé par PKCE, est la référence pour tous les types de clients. Les flux implicite et par mot de passe sont déconseillés par les bonnes pratiques de sécurité (RFC 9700) et retirés d'OAuth 2.1.

Ce qui arrive si on s'en passe

Sans délégation OAuth 2.0, une application tierce qui doit agir sur un compte n'a qu'une voie : recevoir le mot de passe de son propriétaire et le conserver. Elle obtient alors tous les droits du compte, sans périmètre ni durée : lire, modifier, supprimer, changer les paramètres de sécurité. Toute fuite de la base de cette application livre des identifiants complets, réutilisables sur d'autres services si le même mot de passe y sert. Retirer l'accès à une seule application impose de changer le mot de passe, ce qui coupe toutes les autres en même temps. Côté fournisseur, les journaux ne distinguent plus les actions de l'application de celles du titulaire : une opération suspecte ne peut plus être attribuée, et aucun client précis ne peut être révoqué. Enfin, l'authentification multifacteur devient soit un obstacle qui casse l'intégration, soit une protection qu'on désactive pour la faire fonctionner.

Explication de la marmotte

Imagine que tu veux qu'une appli de retouche récupère tes photos rangées sur un autre site. Tu pourrais lui donner ton mot de passe, mais elle aurait alors accès à tout, exactement comme toi. Avec ce système, tu passes plutôt par le site qui garde tes photos : il te demande si tu es d'accord, puis remet à l'appli un badge temporaire qui ouvre seulement le tiroir des photos. C'est comme la carte d'un hôtel : elle ouvre ta chambre, pas le coffre de la réception, et elle ne marche plus après ton départ. Ton mot de passe, lui, ne quitte jamais le site d'origine.

Où ce terme est utilisé

← Tout le glossaire