<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Artisan Numérique</title>
  <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1128"/>
  <link rel="self" type="application/atom+xml" href="http://artisan.karma-lab.net/node/1128/atom/feed"/>
  <id>http://artisan.karma-lab.net/node/1128/atom/feed</id>
  <updated>2008-10-01T14:34:13+02:00</updated>
  <entry>
    <title>Avoir son adresse openID</title>
    <link rel="alternate" type="text/html" href="http://artisan.karma-lab.net/node/1128" />
    <id>http://artisan.karma-lab.net/node/1128</id>
    <published>2008-02-06T11:29:29+01:00</published>
    <updated>2008-10-01T14:34:13+02:00</updated>
    <author>
      <name>Ulhume</name>
    </author>
    <category term="Sécurité" />
    <category term="OK" />
    <category term="Planet Libre" />
    <category term="Tutoriel" />
    <summary type="html"><![CDATA[<p>
  <a class='external' target='_blank' href='http://www.openIDfrance.fr/' >openID</a> a le vent en poupe et j'en veut pour preuve que <a class='external' target='_blank' href='http://www.pcinpact.com/actu/news/34547-openID-microsoft-identification.htm' >même Microsoft</a> et Yahoo s'y mettent. C'est dire... Il était donc temps pour moi de voir comment mettre en place son <b>propre serveur openID</b> et comment <b>publier</b> ce serveur.
</p>
    ]]></summary>
    <content type="html"><![CDATA[<p>
  <a class='external' target='_blank' href='http://www.openIDfrance.fr/' >openID</a> a le vent en poupe et j'en veut pour preuve que <a class='external' target='_blank' href='http://www.pcinpact.com/actu/news/34547-openID-microsoft-identification.htm' >même Microsoft</a> et Yahoo s'y mettent. C'est dire... Il était donc temps pour moi de voir comment mettre en place son <b>propre serveur openID</b> et comment <b>publier</b> ce serveur.
</p>
<!--break-->

	<a name='chapter_1'></a>
  <h2>openID, quoi qu'est-ce ?</h2>
	
<p>
   Sans trop revenir sur les plus ou moins fumeux mythes de WEB 2.0, il est au moins clair que si la toile de <q>l'après Wikipedia</q> n’a rien de technologique, elle a intégré trois évolutions d'usages majeures :
   <ul>
   <li>Le <q>
  <a target='_blank' href='http://fr.wikipedia.org/wiki/crowdsourcing'>
  crowdsourcing
  </a></q> qui délègue aux internautes le soin de fournir (gracieusement... ) des contenus.</li>
   <li>Les <q>
  <a target='_blank' href='http://fr.wikipedia.org/wiki/réseaux sociaux'>
  réseaux sociaux
  </a></q> qui relient les internautes entre eux à travers de simples commentaires ou par des outils évolués de mise en relation (facebook, viadeo, etc.)</li>
   <li>Et enfin l'<q>
  <a target='_blank' href='http://fr.wikipedia.org/wiki/identité numérique'>
  identité numérique
  </a></q>, qui fait passer l'internaute du statut de simple <q>visiteur</q> à celui <q>d'utilisateur</q>, avec son profil, ses préférence, son pseudo, etc.</li>
    </ul>
</p>
<p>
   Or d'identité numérique nous sommes vite passé à la <q>schizophrénie numérique</q> tant sont multiples les comptes, les points d'intervention, les mots de passe à mémoriser, etc.
</p>
<p>
   OpenID est donc l’une des réponses à cette schizophrénie et en tout cas la seule qui soit <a class='external' target='_blank' href='http://fr.wikipedia.org/wiki/Logiciel_libre' >libre</a>. Pour rapidement comprendre en quoi cela consiste, prenons un exemple classique, la saisie d'un commentaire sur un billet :
   <ul>
    <li>Comme chaque matin, je vais faire un tour sur <kbd>auBlogDuCoin.fr</kbd>, et j'y découvre un très intéressant article.</li>
    <li>Je veux intervenir dans la conversation et donc saisir un commentaire.</li>
    <li>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 <kbd>http://ulhume.fr/monopenID</kbd>. </li>
    <li>Je poursuis en rédigeant un commentaire éclairé et je valide. </li>
    <li>Sans rien me dire et de manière invisible, le site va aller faire un tour sur <kbd>http://ulhume.fr/monopenID</kbd> pour récupérer cette fois l'adresse de <b>mon VRAI serveur openID</b>. Cette adresse peut être quelque chose comme <kbd>http://serveuropenID.fr/ulhume</kbd>.</li>
    <li>Le site va alors me rediriger sur <kbd>http://serveuropenID.fr/ulhume</kbd> pour authentification.</li>
    <li>A partir de maintenant, ce n’est pas <kbd>www.auBlogDuCoin.fr</kbd> mais bien <kbd>http://serveuropenID.fr/ulhume</kbd> qui me demande mon login et mot de passe.</li>
    <li>Si le login et le mot de passe sont bon, <kbd>http://serveuropenID.fr/ulhume</kbd> me redirige sur <kbd>auBlogDuCoin.fr</kbd> qui va ainsi recevoir, de manière totalement invisible pour moi, les informations me concernant : psoeudo, site web, adresse eMail, avatar, etc.</li>
    <li><kbd>auBlogDuCoin.fr</kbd> a maintenant toutes les informations nécessaires et peut donc enfin valider mon commentaire.</li>
   </ul>
</p>
<p>
  La question que l'on peut se poser c'est : <q>pourquoi aller d'abord sur un première adresse pour ensuite aller sur le "vrai" serveur openID ? Pourquoi ne pas y aller directement ?</q>. La réponse est assez simple. La première adresse, <q>http://ulhume.fr/monopenID</q> m'appartient. C'est généralement votre site web ou votre blog. En revanche le serveur openID, <q>http://serveuropenID.fr/ulhume</q>, 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 <b>perdre mon openID</b>. En terme technique, on dit que la première page <b>délègue</b> l'authentification à la seconde adresse. 
</p>
<p>
  De tout ceci nous pouvons retirer plusieurs choses sur l'openID :
  <ul>
    <li>Jamais le site que je visite ne voit mon mot de passe. Il n'a qu'un identifiant unique, mon adresse openID.</li>
    <li>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.</li>
    <li>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. </li>
    <li>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. 
    </li>
  </ul>
</p>
<p>
  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. 
</p>

	<a name='chapter_2'></a>
  <h2>Création d'un compte</h2>
	
<p>
  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. 
</p>
<p>
  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.  
</p>

<h3>Fabriquer son propre serveur openID</h3>
<p>
  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...  
</p>
<p>
  Pour qui dispose d'un simple hébergement PHP, il existe plusieurs serveurs openID mais le plus simple est définitivement <a class='external' target='_blank' href='http://siege.org/projects/phpMyID/' >phpMyID</a>. 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 <a href='#' title='Avant de mourrir, ce lien pointait sur : http://www.openidenabled.com/openID/php-standalone-openID-server/' >PHP Standalone openID Server</a> 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. 
</p>
<p>
  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 <external href="">subversion</external> :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw3">cd</span> <span class="sy0">/</span>var<span class="sy0">/</span>www<br />
svn <a target="blank" href="http://pwet.fr/man/linux/commandes/co"><span class="kw2">co</span></a> phpMyID<br />
<a target="blank" href="http://pwet.fr/man/linux/commandes/chown"><span class="kw2">chown</span></a> apache:apache phpMyID -Rc
  </div>
  
  </div>
</p>
<p>
  L'avantage de la solution subversion est que la mise à jour est simple comme un :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="kw3">cd</span> <span class="sy0">/</span>var<span class="sy0">/</span>www<span class="sy0">/</span>phpMyID<br />
svn up
  </div>
  
  </div>
</p>
<p>
  Dans un cas comme dans l'autre, vous devez avoir maintenant un dossier <kbd>/var/www/phpMyID</kbd>. 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 <kbd>roberto</kbd> et que le mot de passe soit <kbd>secret</kbd>. Pour fabriquer la clef d’identification il vous suffit alors de taper la commande :
  
  <div class='code-block code-block-traces'>
  <div class='container'>
  <div class='command'><span class='prompt'>gaston$</span>echo "roberto:monSite.com:secret" | md5sum</div><div class='result'>69f48b88c2171415117f29eff63da779  -</div><div class='command'><span class='prompt'>gaston$</span><span class='cursor'>&nbsp;</span></div>
  </div>
  
  </div>
</p>
<p>
  Si vous n'avez pas accès à un shell, le code php suivant (à détruire après usage !!) fera l'affaire :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <a target="blank" href="http://www.php.net/?"><span class="kw2">&lt;?</span></a><br />
&nbsp; &nbsp;<a target="blank" href="http://www.php.net/print"><span class="kw3">print</span></a> <a target="blank" href="http://www.php.net/md5"><span class="kw3">md5</span></a><span class="br0">&#40;</span><span class="st0">&quot;roberto:monSite.com:secret&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span><br />
<a target="blank" href="http://www.php.net/?"><span class="kw2">?&gt;</span></a>
  </div>
  <div class='caption'>genkey.php</div>
  </div>
</p>
<p>
  Une fois la clef en main, nous devons la coller, avec notre pseudo, dans le fichier <kbd>MyID.config.php</kbd> :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="st0">'auth_username'</span> <span class="sy0">=&gt;</span> &nbsp; &nbsp; &nbsp;<span class="st0">'roberto'</span><span class="sy0">,</span><br />
<span class="st0">'auth_password'</span> <span class="sy0">=&gt;</span> &nbsp; &nbsp; &nbsp;<span class="st0">'69f48b88c2171415117f29eff63da779'</span><span class="sy0">,</span>
  </div>
  
  </div>
</p>
<p>
  Maintenant il ne nous reste maintenant plus qu'à modifier la configuration d'apache (si c'est nécessaire) :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  Alias /phpMyID/ &quot;/var/www/phpMyID/&quot;<br />
<span class="sc3"><span class="re1">&lt;Directory</span> <span class="st0">&quot;/var/www/phpMyID/&quot;</span><span class="re2">&gt;</span></span><br />
&nbsp; &nbsp; Order allow,deny<br />
&nbsp; &nbsp; Allow from all<br />
<span class="sc3"><span class="re1">&lt;/Directory<span class="re2">&gt;</span></span></span>
  </div>
  
  </div> 
</p>
<p>
  Et c'est fini !! Votre serveur openID est prêt à être publié grâce à ces coordonnées :

  <div class='code-block code-block-fragment'>
  <div class='container'>
  &lt;link rel=&quot;openID.server&quot; href=&quot;http://monSite.com/phpMyID/MyID.config.php&quot; /&gt;<br />
&lt;link rel=&quot;openID.delegate&quot; href=&quot;http://monSite.com/phpMyID/MyID.config.php&quot; /&gt; &nbsp;
  </div>
  
  </div>
</p>
<div class='inline-box attention'>
  MyPhpID est incompatible avec l'extension PHP <a class='external' target='_blank' href='http://www.hardened-php.net/' >Suhosin</a>. 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 !!). 
</div>


<h3>Serveurs openID publiques</h3>
<p>
  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 <q>Well Known &amp; Simple Providers</q> du site <a class='external' target='_blank' href='http://openID.net/get/' >openID.net</a> vous en fournit une liste.</p>
  <p>Il est aussi possible de passer par <a class='external' target='_blank' href='http://www.openIDfrance.fr/home-2/Creez+votre+openID.html' >openID France</a> qui est une association 1901. 
</p>
<p>
  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 :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  http://www.openIDfrance.fr/roberto
  </div>
  
  </div>
</p>
<p>
  Et un bout de code HTML pour que vous puissiez créer votre propre adresse openID :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  &lt;link rel=&quot;openID.server&quot; href=&quot;http://www.openIDfrance.fr/index.php&quot; /&gt;<br />
&lt;link rel=&quot;openID.delegate&quot; href=&quot;http://www.openIDfrance.fr/roberto&quot; /&gt;
  </div>
  
  </div>
</p>
<p>
  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. 
</p>



	<a name='chapter_3'></a>
  <h2>Votre adresse openID</h2>
	
<p>
   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.
</p>
<p>
  Là, vous avez le choix. Si vous avez un site web ou un blog, il suffit de coller ces deux lignes dans la balise <kbd>&lt;HEAD&gt;</kbd> 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 <kbd>http://monSite.com/roberto/index.html</kbd> et y mettre le code suivant :
  
  <div class='code-block code-block-fragment'>
  <div class='container'>
  <span class="sy0">&lt;</span>html<span class="sy0">&gt;</span><br />
<span class="sy0">&lt;</span>head<span class="sy0">&gt;</span><br />
<span class="sy0">&lt;</span>TITLE<span class="sy0">&gt;</span>L<span class="st0">'openID de Roberto !&lt;/TITLE&gt;<br />
&lt;link rel=&quot;openID.server&quot; href=&quot;http://monSite.com/robertoopenID/MyID.config.php&quot; /&gt;<br />
&lt;link rel=&quot;openID.delegate&quot; href=&quot;http://monSite.com/robertoopenID/MyID.config.php&quot; /&gt; &nbsp;<br />
&lt;/head&gt;<br />
&lt;body&gt;<br />
La page openID de Roberto !<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
</span
  </div>
  
  </div>
</p>


<p>
  Il ne vous reste maintenant plus qu'à tester votre nouvelle adresse openID. Pour se faire vous pouvez aller sur <a href='#' title='Avant de mourrir, ce lien pointait sur : http://www.biff.org.uk/dave/openid/guestbook.cgi' > cette application de test </a> ou alors pour traquer les problèmes, utiliser <a class='external' target='_blank' href='http://openIDenabled.com/resources/openid-test/' >cette page de validation</a> très complète (et plus complexe...). 
</p>


	<a name='chapter_4'></a>
  <h2>Conclusion</h2>
	
<p>
  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. 
</p>    ]]></content>
  </entry>
</feed>
