OAuth et  OpenId


Une partie de ces ambitions a été réalisée avec le SSO (2015)

ATTENTION (2017-07-20) - la situation peut avoir changé depuis que ces informations ont été écrites


Introduction


Pourquoi cette fiche ?
Avec le développement du net, et particulièrement des sites sociaux et participatifs, il se dégage un vrai besoin en ce qui concerne l'identité numérique pour les internautes. Facebook en est d'ailleurs la meilleure preuve

Le temps où les seuls identifiants et mots de passe dont on devait se soucier étaient ceux de son mail (quand on en avait encore qu'un seul) est révolu, et l'inscription devient de plus en plus nécessaire (et même quelque fois obligatoires sur certains sites) pour profiter de leur services.

Tela devant gérer une base données assez conséquentes d'utilisateurs (aux alentours de 10 000), nous sommes confrontés à ce problème, aussi bien les pôles informatiques que acceuil et communication : en effet, combien d'utilisateurs perdent leur mot de passe Tela ? Changent de mail sans changer cette information sur Tela ? Combien sont inscrit sur Yahoo et pas sur Tela et ne peuvent pas communiquer ensemble ?

Et plus généralement, combien en ont assez de devoir remplir les mêmes informations sur différents sites où il est nécessaire de s'inscrire.

De tout cela, se dégagent deux besoins :
  • Celui de se construire une identitĂ© numĂ©rique qui soit centralisĂ©e et "officielle". C'est dans un sens ce que tente de faire Facebook, mais c'est une sociĂ©tĂ© privĂ©e, dont les interĂŞts ne concorderont pas toujours (pas souvent?) avec ceux des utilisateurs du net.
  • Celui de pouvoir partager des informations d'un site Ă  un autre, importer des photos d'un forum Yahoo sur Tela par exemple, ou bien de pouvoir rassembler des donnĂ©es provenant de diffĂ©rents sites. C'est un peu ce que l'on peut faire sur Netvibes ou dans son lecteur de flux RSS, mais on ne fait qu'y lire des informations ; et on pourrait vouloir imaginer une application qui rassemble des donnĂ©es de diffĂ©rents sites et permettent de les gĂ©rer toutes au mĂŞme endroit, par exemple :
  • Je participe Ă  determination de plantes, je peux y envoyer un mail que j'ai prĂ©parĂ© sur yahoo dans mes brouillons et y ajouter une photo Ă  Flickr, tout ça sur la mĂŞme page.

Au fur et à mesure du développement de Tela Botanica, il apparaît qu'il est crucial de prendre en compte sur le site et dans nos applications ces deux besoins et de participer à ce que des standards libres et interopérables se développent, tout comme il a été crucial au commencement de parier sur les logiciels et les données libres.

Pour conclure cette introduction (si l'on peut dire dire !), il faut trouver une moyen pour que utilisateur de Tela Botanica ne soient pas cantonnés à leur identité de telabotanistes, et que tout ce qu'ils sont et produisent, puisse être partagé sur d'autres espaces s'il le désirent.

Pour rĂ©soudre ces questions, nous allons Ă©tudier deux solutions libres en Ă©mergence :  OpenID et OAuth



 OpenId


Qu'est ce que  OpenId ?


 OpenID est un système dÂ’authentification dĂ©centralisĂ© qui permet lÂ’authentification unique, ainsi que le partage dÂ’attributs.
Il permet Ă  un utilisateur de sÂ’authentifier auprès de plusieurs sites (devant prendre en charge cette technologie) sans avoir Ă  retenir un identifiant pour chacun dÂ’eux mais en utilisant Ă  chaque fois un unique identifiant  OpenID. Le modèle  OpenID se base sur des liens de confiance prĂ©alablement Ă©tablis entre les fournisseurs de services (sites web utilisant  OpenID par exemple) et les fournisseurs dÂ’identitĂ© ( OpenID providers).
Il permet aussi d’éviter de renseigner à chaque fois un nouveau formulaire en réutilisant les informations déjà disponibles (source http://fr.wikipedia.org/wiki/OpenID).

Les acteurs mis en jeu


  • lÂ’utilisateur : il dĂ©sire avoir une identitĂ©, qu'il pourra utiliser sur plusieurs sites web sans avoir Ă  reremplir encore et encore les mĂŞmes informations. Chaque utilisateur est identifiĂ© par une URI, quÂ’il acquiert auprès de son fournisseur dÂ’identitĂ©  OpenID.
  • le consommateur (ou Relying Party) : il dĂ©sire avoir une preuve de lÂ’identitĂ© de lÂ’utilisateur. CÂ’est un site web, un service web, une application...
  • le fournisseur dÂ’identitĂ© ( OpenID Provider) : cÂ’est un serveur dÂ’authentification  OpenID qui est contactĂ© par le consommateur pour obtenir une preuve de lÂ’identitĂ© de lÂ’utilisateur.  OpenID est dĂ©centralisĂ©, c'est-Ă -dire que quiconque peut devenir fournisseur sans avoir besoin de s'enregistrer ou d'obtenir la permission d'une quelconque organisation centrale.
  • le client, par exemple le navigateur internet de lÂ’utilisateur.

Comment ça marche ?


CrĂ©er un compte  OpenID :

Le mode de fonctionnement est le suivant :
  • LÂ’utilisateur choisit un fournisseur dÂ’identitĂ©  OpenID, par exemple  VeriSign
  • LÂ’utilisateur choisit un nom dÂ’utilisateur (Mrbota pour lÂ’exemple), un mot de passe et crĂ©e son compte.

LÂ’utilisateur peut renseigner certaines informations le concernant.
Ce compte aura pour identifiant  OpenID : Mrbota.pip.verisignlabs.com. Le profil de lÂ’utilisateur est Ă©galement disponible Ă  cette adresse.

S'identifier :

Le mode de fonctionnement est le suivant, avec  MyOpenId pour fournisseur dÂ’identitĂ© :
  • LÂ’utilisateur Mrbota dĂ©sire, par exemple, accĂ©der Ă  une partie du Site Tela Botanica qui requiert que lÂ’utilisateur soit authentifiĂ©.
Mrbota n'est pas encore inscrit Ă  Tela Botanica.
  • LÂ’utilisateur entre son identifiant : Mrbota.pip.verisignlabs.com.
  • Tela Botanica contacte Verisign et ils crĂ©ent ensemble un secret partagĂ©.
  • LÂ’utilisateur est redirigĂ© vers Verisign et entre son mot de passe pour sÂ’authentifier.
  • LÂ’utilisateur est alors averti que Tela Botanica souhaite avoir accès Ă  certains attributs de son profil  OpenID (par exemple, son nom, prĂ©nom, et son adresse de courriel), pour pouvoir l'authentifier, et mĂŞme rĂ©aliser une vraie inscription Ă  minima Ă  Tela Botanica s'il le dĂ©sire. L'utilisateur accepte ou non cette demande.
  • LÂ’utilisateur est redirigĂ© vers Tela Botanica avec une preuve cryptographique de son identitĂ© (créée grâce au secret partagĂ© prĂ©alablement Ă©tabli) fournie par Verisign et est authentifiĂ©.

Tant que la session de lÂ’utilisateur est active, il pourra ĂŞtre reconnu automatiquement sur les autres sites utilisant  OpenID grâce au mĂ©canisme de lÂ’authentification unique.

Quelques sites Web compatibles avec  OpenId


  • AOL
  • Dailymotion
  • Google
  • Microsoft Windows Live
  • Myspace
  • Orange
  • Sourceforge
  • Yahoo
  • Facebook
  • Twitter

Quelques fournisseurs  OpenId reconnus



De plus, depuis le 9 septembre 2009, le gouvernement des États Unis a adoptĂ© le standard  OpenID pour l'administration en ligne.

Solutions techniques


Il existe de nombreuses librairies  OpenID Ă©crites en php, certaines permettent de s'identifier auprès d'une tierce partie, et d'autres fournissent aussi des moyens de devenir soi mĂŞme fournisseur  OpenID (ce qui est stratĂ©giquement interessant pour Tela Botanica).
En voici quelque unes, toutes sous une licence libre (BSD ou Apache 2) :

  • PHP OpenId identification : oui fournisseur d'identitĂ© : oui
  • identification : oui fournisseur d'identitĂ© : oui
  • Zend Framework OpenId component
  • identification : oui fournisseur d'identitĂ© : oui
  • Easy OpenID Librairie "Stand Alone" qui spĂ©cifie particulièrement n'utiliser aucune classe PEAR.
  • identification : oui fournisseur d'identitĂ© : non
  • Simple OpenId PHP Class Une classe "Stand Alone"
  • identification : oui fournisseur d'identitĂ© : non

Questions :


  • Pourquoi utiliser  OpenID sur Tela Botanica ?
  •  OpenID semble amenĂ© Ă  devenir un standard car utilisĂ© par plusieurs sites populaires.
  • Nous pouvons devenir nous mĂŞme fournisseur  OpenID et contribuer Ă  Ă©tablir une rĂ©putation de " site de confiance" Ă  Tela Botanica. De plus la possibilitĂ© d'avoir un identifiant de la forme moi.pip.tela-botanica.org et pouvoir l'utiliser sur le net pourrait (peut-ĂŞtre ?) devenir un gage de serieux de la part d'un interlocuteur.
  • Grâce Ă   OpenId il sera possible d'allĂ©ger, voire de rendre quasi transparente la phase d'inscription sur le site de Tela, ou au contraire, permettre de s'en passer pour ceux qui ne le dĂ©sirent pas.
  • Le cas oĂą la personne change de mail et oublie de le changer sur Tela sera rĂ©volu aussi car le mail sera une information centralisĂ©e.
  • La cas pratique oĂą une personne participe sur un forum de Yahoo et veut consulter quelques informations protĂ©gĂ©es sur Tela alors qu'elle n'est pas inscrite pourra ĂŞtre facilement rĂ©solu.
  •  OpenID est un standard libre, auquel nous pouvons contribuer, ce qui est dans la philosophie de Tela

Quelques liens :


OAuth


Qu'est ce que OAuth ?


OAuth est un protocole libre, initié par Blaine Cook et Chris Messina, qui permet l'authentification à une API sécurisée d'une façon simple et standard depuis son bureau ou une application web. Pour les développeurs d'une application accédant à une API, OAuth est une façon de publier et d'intéragir avec des données protégées. Pour les développeurs fournissant une API, OAuth permet de donner accès aux données tout en protégeant le pseudo et mot de passe des utilisateurs. (source http://fr.wikipedia.org/wiki/OAuth).

Si  OpenId se veut ĂŞtre un standard pour l'identitĂ© numĂ©rique, OAuth est son pendant en ce qui concerne le partage de ressources entre sites ou applications.

Exemple d'utilisation


Par exemple : je veux fabriquer album photo de mes dernières vacances sur le site monalbum.com.
Mes images sont situées sur sur le site mesphotos.com, elles sont privées, et je n'ai pas envie de les charger encore une fois sur un autre site web.
Les deux sites supportent OAuth et se conforment au standard.

Voici le protocole pour l'utilisateur

  • Je suis identifiĂ© sur monalbum.com et je choisis d'importer des photos Ă  partir d'un autre site : mesphotos.com
  • Je suis amenĂ© sur mesphotos.com et on me demande de m'identifier (login + mot de passe), je m'Ă©xĂ©cute.
  • Un Ă©cran de mesphotos.com m'avertit que le site monalbum.com cherche Ă  accĂ©der Ă  mes donnĂ©es en lecture seule et si j'accepte, cette autorisation sera valable une heure. J'accepte.
  • Je suis ramenĂ© sur monalbum.com oĂą l'on m'indique que les photos sont en train d'ĂŞtre rĂ©cupĂ©rĂ©es.
  • Une fois cela terminĂ©, mes photos sont importĂ©es sur monalbum.com et je peux commencer Ă  mettre en page mon album

  • Conclusion : j'ai pu permettre au site monalbum.com d'accĂ©der Ă  des donnĂ©es privĂ©es sur mesphotos.com sans avoir Ă  donner mes identifiants et mot de passe de mesphotos.com Ă  mon album.com (contrairement Ă  facebook qui demande le mot de passe hotmail et l'identifiant pour importer ses contacts en jurant sur la tĂŞte de toute sa famille qu'il ne le utilisera pas ni ne les conservera).
  • De plus l'autorisation que j'ai donnĂ©e expire dans une heure, est en lecture seule, et ne concerne que ce qui est autorisĂ© par l'api OAuth implĂ©mentĂ©e sur mesphotos.com; elle ne peut donc pas servir Ă  accĂ©der Ă  mon compte sur ce site, ni a modifier mes donnĂ©es.



Solutions techniques :


  • HTTP_OAuth Libraire PEAR pour OAuth
  • OAuth Libraire php pecl pour l'interaction OAuth
  • oauth-php librairie tierce pour clients et serveur OAuth

Questions :


  • L'idĂ©e est allĂ©chante mais rĂ©pond elle Ă  un des problèmes posĂ©s par le cahier des charges de l'annuaire ?
  • Peut on l'utiliser pour Ă©tablir un protocole de communication entre les applications et l'annuaire (pour fabriquer le rĂ©sumĂ© des rĂ©alisations d'un membre, ou pour fabriquer le tableau de bord des applications d'un utilisateur) ?
  • Il existe des libraires PHP, mais elle ne sont pas standard, y a t'il d'autres solutions ?

Quelques liens :