OAuth est un protocole d'authentification et d'autorisation, initialement développé pour les applications Web, né sur Twitter en 2006..

Il permet aux logiciels tiers de faire quelque chose en votre nom, pour une durée limitée et sans donner à ce logiciel un accès complet et permanent aux informations réservées. L'analogie la plus courante est celle des clés avec valet.

Approfondissons un peu et découvrons plus sur OAuth.

Q: Alors, clés du valet. Vous voulez dire les clés normalement remises aux préposés au stationnement dans les hôtels?

A: oui Ces clés permettent d'ouvrir, de démarrer et de conduire votre voiture, mais uniquement pour un trajet très court et sans ouvrir le coffre. OAuth fonctionne comme une clé de valet pour vos données. Il donne un accès temporaire et restreint à quelque chose qui est à vous, sans donner le contrôle total.

Q: Maintenant, je comprends ce que vous voulez dire mais… est-ce un problème du monde réel??

R: C'est devenu le cas lorsque les services en ligne et les réseaux sociaux sous toutes leurs formes, de Twitter à Flickr en passant par les services bancaires à distance, sont devenus non seulement omniprésents, mais également interconnectés. Ils sont beaucoup plus utiles pour les faire fonctionner ensemble..

Q: Vous faites référence à des cas tels que la publication d'une galerie Flickr sur Facebook.

A: Oui, exactement. Pouvoir faire cela sans tout ré-entrer manuellement est génial. Cependant, le faire sans quelque chose comme OAuth peut signifier donner à ces sites un accès complet à tous vos éléments (fichiers, listes de contacts, accès complet aux services, etc.)..

Q: C'est pourquoi vous avez parlé à la fois d'authentification et d'autorisation?

A: correct L'authentification, c'est avoir un moyen de prouver que vous êtes vraiment vous. Veuillez noter qu'en général, cela ne fait aucune différence si vous êtes un être humain ou un logiciel. Alors que l’autorisation est un service séparé, également nécessaire. Si une personne ou un logiciel a déjà prouvé à Facebook son identité, cela ne signifie pas qu'elle ait l'autorisation de mettre à jour notre statut comme s'il s'agissait de nous..

Q: OpenID n'aurait-il pas pu être utilisé pour cela??

A: OpenID ne traite que de l'authentification. Au lieu de cela, OAuth aide dans tous les cas où (en utilisant la terminologie OAuth) un logiciel (client) qui souhaite accéder aux données pour le compte de celui qui a le droit d’autoriser cet accès (propriétaire de la ressource) est complètement séparé et inconnu de , le logiciel ou le service qui stocke ces ressources.

Q: Attends une seconde! Quelque chose comme cela était possible des années avant OAuth!

R: Oui, mais dans la plupart des cas, cela impliquait soit d'utiliser un seul compte d'un réseau de sites Web déjà coopérants, soit de donner à au moins l'un d'entre eux vos noms d'utilisateur et mots de passe sur tous les autres. OAuth tente de fermer cette faille de sécurité.

Q: Vous voulez dire autoriser l'accès à ce qui se trouve dans un compte Web sans donner mon mot de passe et mon nom d'utilisateur?

R: Supposons que vous avez fait un commentaire sur un blog et que vous souhaitiez que ce blog le publie sur Twitter en votre nom afin de ne pas avoir à taper. Lorsque vous demandez au logiciel de blog de le faire (par exemple en cliquant sur un bouton), il envoie une demande à Twitter, qui comprend une clé d'identification et la liste des données ou des services auxquels il souhaite accéder en votre nom. Twitter (pas le blog!) Vous présentera un formulaire d'autorisation personnalisé sur son serveur. Si vous vous connectez avec succès sur Twitter et répondez "oui" à cette demande, vous aurez autorisé Twitter à satisfaire la demande de ce blog. Sans transmettre votre mot de passe et votre nom d'utilisateur.

Q: cool! Alors quoi?

R: Twitter indiquera à votre navigateur de revenir sur le blog, mais avec une URL spéciale comprenant un «jeton d'accès» ou une clé d'autorisation à usage unique. À ce stade, le logiciel de blog pourra présenter ce jeton sur Twitter, prouvant ainsi que c'est celui qui vient d'obtenir votre permission pour modifier ou modifier votre compte..

Q: Et cela fonctionnera avec tous les sites Web compatibles OAuth, pas seulement Twitter?

A: c'est correct. Tant que ces sites ne rejettent pas la demande initiale, bien sûr. Outre la commodité pour l'utilisateur final, un autre puissant moteur pour OAuth était le souhait de rendre la vie plus difficile aux spambots et autres applications malveillantes..

Q: Comment OAuth ferait-il cela??

R: Indépendamment de l'autorisation de l'utilisateur, un logiciel ne peut fonctionner comme décrit que s'il en a été autorisé par le site Web auquel il souhaite accéder. OAuth accomplit cela en utilisant plusieurs clés d’identification, ou identifiants, en parallèle..

Q: Quelles sont ces informations d'identification et qui les délivre??

R: Celui que nous avons déjà mentionné, ceux utilisés pour déclarer que l'accès à un programme est autorisé sans donner votre mot de passe, sont appelés identifiants de jeton. Cependant, avant d’atteindre ce point, le client doit avoir envoyé au serveur ses informations d’identification client valides..

En général, ils sont émis par le serveur Web lui-même. Lorsque les développeurs de certains logiciels souhaitent y ajouter des fonctionnalités OAuth, ils s'enregistrent auprès du serveur pour obtenir ces informations d'identification, ou clés. Cela rend un peu plus facile d'arrêter certains logiciels malveillants, mais a également cassé beaucoup de programmes existants.

Q: Vous continuez à parler de sites Web. Cela signifie-t-il que OAuth est inutilisable par un logiciel de bureau??

A: C'est une question piège. Techniquement, rien dans OAuth n'empêche les clients d'être des applications de bureau traditionnelles s'exécutant dans votre ordinateur. En pratique, le faire (du moins avec OAuth 1.0) rend la vie plus difficile aux développeurs de bonne foi, ou le concept global des informations d'identification du client est presque inutile. Surtout lorsque vous utilisez un logiciel open source.

Q: Argh! Maintenant c'est mauvais, mais pourquoi?

R: Parce que le schéma que j'ai décrit fonctionne parfaitement lorsque les informations d'identification du client sont incorporées dans du code source et / ou des programmes compilés qui ne s'exécutent que sur un serveur Web, où personne ne peut lire ces informations dans le code source ou, à l'aide d'éditeurs hexagonaux et d'outils similaires, dans les fichiers exécutables.

Q: Est-ce la raison pour laquelle le problème est encore plus grave avec les logiciels de bureau open source??

A: précisément. Si vous mettez quelque chose qui est censé rester privé dans un code source que tout le monde a le droit de télécharger et d’étudier… ce n’est pas privé par définition, est-ce?

Q: Bien sûr, mais cela ne fait que rendre le schéma moins utile. Pourquoi avez-vous également dit que OAuth rompt un logiciel existant??

R: Parce qu'avant OAuth 1.0, toute personne possédant une connaissance de base des scripts shell et de cUrl (y compris le vôtre!) Pouvait, en quelques minutes, conclure un script qui se connecterait automatiquement à Twitter pour lire une ligne de temps ou publier un message. tweet. OAuth a rendu cela impossible sans informations d'identification de client enregistrées et valides. Même lorsque l'obtention de ces informations d'identification prend beaucoup plus de temps que l'écriture du script,!

Q: N'y a-t-il aucun moyen de corriger ces scripts??

R: Bien sûr, utilisez l’une des nombreuses bibliothèques de logiciels déjà enregistrées. Cependant, cela rend toujours ces scripts beaucoup plus compliqués à écrire et à maintenir qu’ils ne l’étaient. Jusqu'à la sortie d'OAuth 2.0, au moins.

Q: Vous voulez dire qu'une version 2.0 est à venir? Quand?

R: La prévision, pendant que nous écrivons, est que OAuth 2.0 devrait être terminé d'ici la fin de 2011..

Q: Quoi de neuf dans OAuth 2.0? Cela résoudra-t-il ces problèmes?

Un: il pourrait. L’un des changements les plus importants est l’ajout ou la redéfinition de plusieurs «flux» pour obtenir les informations d’identité de la manière la plus simple possible, même dans les cas où les clients ne sont pas des serveurs Web mais, par exemple, des logiciels exécutés sur des appareils mobiles. Il existe également un flux basé sur les cookies qui devrait permettre de ressusciter les anciens scripts d'automatisation Web basés sur cURL. Il devrait également y avoir plusieurs optimisations de performances, car OAuth 1.0 ne s'adapte pas très bien.

Q: Où puis-je en savoir plus?

L'introduction officielle d'OAuth.