Artisan Numérique

/web/sécurité/réseau/ Avoir son adresse openID

openID a le vent en poupe et j'en veut pour preuve que même Microsoft et Yahoo s'y mettent. C'est dire... Il était donc temps pour moi de voir comment mettre en place son propre serveur openID et comment publier ce serveur.

openID a le vent en poupe et j'en veut pour preuve que même Microsoft et Yahoo s'y mettent. C'est dire... Il était donc temps pour moi de voir comment mettre en place son propre serveur openID et comment publier ce serveur.

openID, quoi qu'est-ce ?

Sans trop revenir sur les plus ou moins fumeux mythes de WEB 2.0, il est au moins clair que si la toile de l'après Wikipedia n’a rien de technologique, elle a intégré trois évolutions d'usages majeures :

  • Le crowdsourcing qui délègue aux internautes le soin de fournir (gracieusement... ) des contenus.
  • Les réseaux sociaux qui relient les internautes entre eux à travers de simples commentaires ou par des outils évolués de mise en relation (facebook, viadeo, etc.)
  • Et enfin l'identité numérique, qui fait passer l'internaute du statut de simple visiteur à celui d'utilisateur, avec son profil, ses préférence, son pseudo, etc.

Or d'identité numérique nous sommes vite passé à la schizophrénie numérique tant sont multiples les comptes, les points d'intervention, les mots de passe à mémoriser, etc.

OpenID est donc l’une des réponses à cette schizophrénie et en tout cas la seule qui soit libre. Pour rapidement comprendre en quoi cela consiste, prenons un exemple classique, la saisie d'un commentaire sur un billet :

  • Comme chaque matin, je vais faire un tour sur auBlogDuCoin.fr, et j'y découvre un très intéressant article.
  • Je veux intervenir dans la conversation et donc saisir un commentaire.
  • C'est cool le site utilise l'openID, je n'ai donc plus besoin de donner mon pseudo, l’adresse de mon site web et mon email, mais juste mon openID qui est une adresse WEB unique du genre http://ulhume.fr/monopenID.
  • Je poursuis en rédigeant un commentaire éclairé et je valide.
  • Sans rien me dire et de manière invisible, le site va aller faire un tour sur http://ulhume.fr/monopenID pour récupérer cette fois l'adresse de mon VRAI serveur openID. Cette adresse peut être quelque chose comme http://serveuropenID.fr/ulhume.
  • Le site va alors me rediriger sur http://serveuropenID.fr/ulhume pour authentification.
  • A partir de maintenant, ce n’est pas www.auBlogDuCoin.fr mais bien http://serveuropenID.fr/ulhume qui me demande mon login et mot de passe.
  • Si le login et le mot de passe sont bon, http://serveuropenID.fr/ulhume me redirige sur auBlogDuCoin.fr qui va ainsi recevoir, de manière totalement invisible pour moi, les informations me concernant : psoeudo, site web, adresse eMail, avatar, etc.
  • auBlogDuCoin.fr a maintenant toutes les informations nécessaires et peut donc enfin valider mon commentaire.

La question que l'on peut se poser c'est : pourquoi aller d'abord sur un première adresse pour ensuite aller sur le "vrai" serveur openID ? Pourquoi ne pas y aller directement ?. La réponse est assez simple. La première adresse, http://ulhume.fr/monopenID m'appartient. C'est généralement votre site web ou votre blog. En revanche le serveur openID, http://serveuropenID.fr/ulhume, ne m'appartient pas forcement. Du coup si je donne la seconde adresse comme étant mon adresse openID, je suis pieds et poings liés avec un fournisseur. Si je veux en changer je vais perdre mon openID. En terme technique, on dit que la première page délègue l'authentification à la seconde adresse.

De tout ceci nous pouvons retirer plusieurs choses sur l'openID :

  • Jamais le site que je visite ne voit mon mot de passe. Il n'a qu'un identifiant unique, mon adresse openID.
  • Mon adresse openID peut ne pas être la même que l'adresse du serveur openID. Il est ainsi possible de changer de fournisseur, sans pour autant changer d'identifiant.
  • Je peux fournir au serveur openID que j'utilise des informations plus où moins complètes selon mes besoins. Certains serveurs permettent même de fournir des informations différentes en fonction du site qui y fait appel.
  • Si je change mes informations, cela change celles de toutes mes interventions sur WEB. Par exemple si je change mon Avatar, ou mon pseudo, cela va être répercuté partout où l'openID a été utilisé. C'est en tout cas théoriquement le cas, car beaucoup de sites "copient" en local ces informations.

C'est bon je crois pour la théorie. Maintenant mettons cela en musique et commençons par nous créer un compte sur un serveur openID.

Création d'un compte

Le serveur openID est un logiciel sur lequel vous devez avoir un compte au sein duquel vous allez stocker vos informations personnelles (pseudo, avatar, etc.). C'est ce serveur qui va réaliser l'authentification réelle sur tous les sites WEB où vous utiliserez votre adresse openID.

A ce stade, vous avez deux options possibles : soit vous décidez d'utiliser un service publique, soit vous préférez fabriquer vous-même votre propre serveur openID.

Fabriquer son propre serveur openID

Choisir entre serveur publique et serveur perso revient à mettre en balance la toute relative difficulté de l'opération avec l'importance que vous accordez à votre vie privée. En effet, toute enthousiasmante soit cette technologie, cela ne doit pas vous faire perdre de vue que votre serveur openID est par définition au courant de toute votre vie sur le WEB. Comme le soulignait, à juste titre Tuxicoman (un peu plus bas dans les commentaires), mettez un serveur openID dans les main d'un Google, et je rajoute, avec le succès d'un Google Analytics, et vos balades sur le net vont vite devenir de la pâtée à fabriquer de l'AddSens...

Pour qui dispose d'un simple hébergement PHP, il existe plusieurs serveurs openID mais le plus simple est définitivement phpMyID. Constitué de seulement deux fichiers il a pour seuls inconvénients que de devoir être paramétré à la mano et d'être mono utilisateur. Si vous cherchez un serveur plus complet (et complexe), orientez vous plutôt pour PHP Standalone openID Server qui a juste l'inconvénient (pour moi) de fonctionner seulement avec MySql. Je vais pour l'instant donc me concentrer sur l'installation de phpMyID.

Pour l'installer vous pouvez soit télécharger et décompresser la dernière archive dans votre dossier web ou alors, ma solution préférée, utiliser subversion :

cd /var/www
svn co phpMyID
chown apache:apache phpMyID -Rc

L'avantage de la solution subversion est que la mise à jour est simple comme un :

cd /var/www/phpMyID
svn up

Dans un cas comme dans l'autre, vous devez avoir maintenant un dossier /var/www/phpMyID. Nous allons donc maintenant paramétrer le serveur en commençant par générer une clef d’identification qui va servir pour l'authentification. Imaginons que votre pseudo soit roberto et que le mot de passe soit secret. Pour fabriquer la clef d’identification il vous suffit alors de taper la commande :

gastonecho "roberto:monSite.com:secret" | md5sum
69f48b88c2171415117f29eff63da779  -

Si vous n'avez pas accès à un shell, le code php suivant (à détruire après usage !!) fera l'affaire :

<?
   print md5("roberto:monSite.com:secret");
?>
genkey.php

Une fois la clef en main, nous devons la coller, avec notre pseudo, dans le fichier MyID.config.php :

'auth_username' =>      'roberto',
'auth_password' =>      '69f48b88c2171415117f29eff63da779',

Maintenant il ne nous reste maintenant plus qu'à modifier la configuration d'apache (si c'est nécessaire) :

Alias /phpMyID/ "/var/www/phpMyID/"
<Directory "/var/www/phpMyID/">
    Order allow,deny
    Allow from all
</Directory>

Et c'est fini !! Votre serveur openID est prêt à être publié grâce à ces coordonnées :

<link rel="openID.server" href="http://monSite.com/phpMyID/MyID.config.php" />
<link rel="openID.delegate" href="http://monSite.com/phpMyID/MyID.config.php" />

MyPhpID est incompatible avec l'extension PHP Suhosin. Vérifiez donc que celle-ci n'est pas présente sur le serveur que vous utilisez ou désactivez-le si vous en avez la possibilité (ne faites pas cela si vous hébergez du code PHP ne vous appartenant pas !!).

Serveurs openID publiques

Si pour des raisons d'hébergement ou de temps (ou simplement pour tester), vous préférez l'option serveur publique, il existe aujourd'hui de nombreux services gratuits et relativement fiable qui permettent l'authentification openID. La section Well Known & Simple Providers du site openID.net vous en fournit une liste.

Il est aussi possible de passer par openID France qui est une association 1901.

La création d’un compte y est aussi simple que classique. Une fois que vous l’avez activé, vous n'avez plus qu'à vous connecter pour paramétrer votre profil. Sur la page d'accueil vous sont fournis deux informations. Une adresse openID fonctionnelle :

http://www.openIDfrance.fr/roberto

Et un bout de code HTML pour que vous puissiez créer votre propre adresse openID :

<link rel="openID.server" href="http://www.openIDfrance.fr/index.php" />
<link rel="openID.delegate" href="http://www.openIDfrance.fr/roberto" />

Une fois de plus, je radote pour la bonne cause, il ne faut pas utiliser l'adresse openID fournit par ce site, car sinon, vous seriez définitivement liés à celui-ci. Il faut que vous utilisiez le code HTML comme nous allons le voir un peu plus loin pour créer votre propre adresse openID.

Votre adresse openID

Que vous ayez créé un compte sur un serveur publique, ou que vous ayez monté votre propre serveur, vous avez maintenant deux lignes de code HTML qui vont vous permettre de créer votre adresse openID.

Là, vous avez le choix. Si vous avez un site web ou un blog, il suffit de coller ces deux lignes dans la balise <HEAD> de la page d’accueil et l'adresse WEB de votre site ou blog est maintenant, votre adresse openID. Vous pouvez créer aussi une page spécifique comme http://monSite.com/roberto/index.html et y mettre le code suivant :

<html>
<head>
<TITLE>L'openID de Roberto !</TITLE>
<link rel="openID.server" href="http://monSite.com/robertoopenID/MyID.config.php" />
<link rel="openID.delegate" href="http://monSite.com/robertoopenID/MyID.config.php" />  
</head>
<body>
La page openID de Roberto !
</body>
</html>

Il ne vous reste maintenant plus qu'à tester votre nouvelle adresse openID. Pour se faire vous pouvez aller sur cette application de test ou alors pour traquer les problèmes, utiliser cette page de validation très complète (et plus complexe...).

Conclusion

OpenID a un réel avenir et présente une véritable solution à l'épineux problèmes des identités numériques multiples. Reste maintenant à ce que de plus en plus de site utilise cet identifiant unique.