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.
Le protocole est créé par Blaine Cook et et sa partie principale, OAuth Core 1.0, est finalisée le .
Histoire OAuth a commencé en , alors que Blaine Cook implémentait OpenID pour Twitter. Avec Chris Messina, ils rencontrèrent David Recordon et Larry Halff pour discuter de la possibilité d'utiliser OpenID et l'API de Twitter pour déléguer l'authentification. Ils conclurent qu'il n'y avait pas de standard ouvert pour la délégation d'accès par API.
Un groupe de travail a été créé en pour rédiger un premier jet de proposition pour un protocole ouvert. DeWitt Clinton de Google fut informé du projet OAuth et affirma sa volonté de soutenir le standard. En , l'équipe rédigea les premières spécifications à l'état de (brouillon). Le , la version OAuth Core 1.0 était publiée.
Le , la version OAuth Core 1.0a venait corriger une faille de sécurité.
En , la RFC 5849 standardise OAuth 1.0a.
En , les RFC 6749 et RFC 6750 standardisent OAuth 2.0.
Mode de fonctionnement vignette|upright=2.0|Workflow d’utilisation de OAuth 2.0
OAuth dans sa version 2.0 repose sur des échanges entre quatre acteurs. Le (utilisateur) est capable d’accorder l’accès à la ressource pour une application client. L’ (serveur d’autorisation) occupe le rôle central au sein du protocole, il est chargé d’authentifier le et de délivrer son autorisation sous la forme d’un jeton appelé . Le 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 Le 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 au client en paramètre de l'adresse URI de retour. Lorsque l'utilisateur se connecte à cette URI complétée de l’, le client renvoie l au serveur d’autorisation pour se voir fournir un (jeton d'accès). Enfin, le client envoie le jeton d'accès au pour obtenir les ressources de l'utilisateur.
Ce mécanisme de va-et-vient avec l’ et jeton d'accès a plusieurs avantages :
il respecte une convention de type sécurité . La machine cliente est jugée peu sécurisée. En cas d'interception des requêtes sur cette dernière, l’ ne permet pas de récupérer les ressources de l'utilisateur. L'échange du jeton d'accès se fait par un canal contrôlé par les deux services professionnels. OAuth permet ainsi aux développeurs, n'ayant pas de serveur avec certificat SSL proprement configuré, de faire appel à d'autres protocoles d'échange sécurisés que HTTPS pour l'échange du jeton d'accès. les jetons d'accès (comme les ) peuvent être signés par le serveur d’autorisation. Ils peuvent également contenir une date de péremption.
Utilisation Des implémentations clientes en logiciels libres du protocole OAuth2 telles que l'extension LibreOffice OAuth2OOo vous permettront d'accéder à des ressources distantes (via l'API Google ou l'API et OAuth 2.0) et ce même éventuellement avec le langage Basic de LibreOffice. Cela rend très facile l'écriture et l'utilisation de requêtes HTTP supportant le protocole OAuth 2.0 dans des macros LibreOffice.
Notes et références
Voir aussi Articles connexes Microformats OpenID Connect DataPortability RPX User-Managed Access
Liens externes
DataPortability.org Tutoriel : Surveillance d'un système Linux en temps réel sur Twitter avec sécurité OAuth
Catégorie:Système d'authentification