Wiki Informatique - OAuth2

OAuth2

OAuth est un protocole libre qui permet d’autoriser un site web, un logiciel ou une application (dite « consommateur ») à utiliser l’API sécurisée d’un autre site web (dit « fournisseur ») pour le compte d’un utilisateur. OAuth n’est pas un protocole d’authentification, mais de « délégation d’autorisation ».

OAuth permet à l’utilisateur de donner au site ou logiciel « consommateur » l’accès à ses informations personnelles qu’il a stockées sur le site « fournisseur » de service ou de données, ceci tout en protégeant le pseudonyme et le mot de passe des utilisateurs. Par exemple, un site de manipulation de vidéos pourra éditer les vidéos enregistrées sur Dailymotion d’un utilisateur des deux sites, à sa demande.

Version 2.0 : fonctionnement

OAuth dans sa version 2.0 repose sur des échanges entre quatre acteurs. Le resource owner (utilisateur) est capable d’accorder l’accès à la ressource pour une application client. L’authorization server (serveur d’autorisation) occupe le rôle central au sein du protocole, il est chargé d’authentifier le resource owner et de délivrer son autorisation sous la forme d’un jeton appelé access token. Le resource server quant à lui correspond au serveur où sont stockées les ressources protégées.

Lorsque l’application cliente souhaite demander une ressource à l’utilisateur, il envoie une requête au serveur d’autorisation composé à la fois d’une adresse URI de retour et d’un scope. Le scope définit le type et le périmètre des ressources demandées. Sur cette base, le serveur d’autorisation authentifie l’utilisateur et recueille son consentement pour la transmission de la ressource. Le serveur d’autorisation va envoyer un authorization code au client en paramètre de l’adresse URI de retour. Lorsque l’utilisateur se connecte à cette URI complétée de l’authorization code, le client renvoie l’authorization code au serveur d’autorisation pour se voir fournir un access token (jeton d’accès). Enfin, le client envoie le jeton d’accès au resource server pour obtenir les ressources de l’utilisateur.

Ce mécanisme de va-et-vient avec l’authorization code et jeton d’accès a plusieurs avantages :