J'ai commencé à faire des recherches visant à implémenter le support (et si possible comme unique système) de OpenID, un système d'authentification assez récent initié par Brad Fitzpatrick, de chez Six Apart.
OpenID est déjà intégré au produit LiveJournal et VOX et devrait également équiper TypePad et bien entendu le très prometteur Movable Type 4.
L'intérêt de ce système est de tout le système d'authentification sur un seul et unique fournisseur d'identité. Pourquoi le faire ? Tout d'abord, rendre le web plus simple.
De nos jours, à chaque fois que l'on a envie d'intégrer un site, on se doit de s'incrire (un forum, un portail, etc...). Résultat, on arrive très vite à avoir plus d'une centaine d'identités, pas facile à gérer tout ça.
OpenID est alors votre seule identité. De ce fait, on pourrait très imaginer (dans un monde utopique certes) qu'OpenID soit le dernier formulaire d'inscription que vous ayez à remplir.
Mais ai-je vraiment envie que le site A ai accès à toutes mes données personnelles que j'ai indiqué dans mon OpenID ? Bien sûr que non, et c'est totalement compréhensible. OpenID a donc un fonctionnement judicieux que voici :
Permière étape (Mode de fonctionnement de l'inscription)
- Je suis sur le site A (appelé également consommateur). Je dois être identifié pour pouvoir poster un article. Pour cela, j'entre mon adresse OpenID (par exemple srangaya.myopenid.com).
- Le site A va alors créer un secret partagé qui servira à ce qu'il communique avec le serveur OpenID de mon fournisseur d'identité.
- Pour valider ce jeton, je dois m'identifier sur le site de mon fournisseur d'identité et accepter le site A comme étant un site autorisé à obtenir des informations sur moi.
- Mon fournisseur d'identité m'affiche ensuite une liste de toutes les infos que le site A souhaite obtenir, je dois alors décidé si je souhaite ou pas qu'il ai accès à une information, soit en la cochant, soit en la décochant.
- Une fois cette opération effectuée, mon fournisseur d'identité envoi les données que j'ai accepté de partager avec le site A de manière sécurisée grâce au secret partagé.
- Je suis redirigé vers le site A, identifié.
Les étapes suivantes (identification simple)
- Je suis sur le site A. Je dois être identifié pour pouvoir poster un article. Pour cela, j'entre mon adresse OpenID (par exemple srangaya.myopenid.com).
- Le site A va alors créer un secret partagé qui servira à ce qu'il communique avec le serveur OpenID de mon fournisseur d'identité.
- Mon fournisseur d'identité vérifie si le site A est dans ma liste de sites autorisés. C'est le cas. Il valide la requête d'authentification auprès du site A grâce au secret partagé.
- Je suis redirigé vers le site A, identifié.
Je teste actuellement la mise en place d'un tel système (d'un point de vue site, pas fournisseur d'identité). Ça marche plutôt pas mal avec PHP (et cette bibliothèque), je n'ai pas encore réussi à obtenir des informations sur l'individu mais j'ai réussi à vérifier son identité.
Comment obtenir une identité ?
Dans quelques mois, TypePad proposera d'obtenir une identité OpenID en standard. De ce fait, votre identité OpenID sera tout simplement l'adresse de votre blog. Si vous souhaitez néanmoins obtenir une adresse d'authentification OpenID dès à présent, je ne peux vous conseiller que MyOpenID.com puisque c'est le seul que j'ai testé.
Est-il possible d'avoir mon adresse d'OpenID (à la place de pastresjolie.adresse.com) ?
Absolument (merci Biologeek pour l'info). Il suffit d'ajouter ces deux balises entre les balises <head> et </head> de la page que vous souhaitez utiliser comme OpenID (par exemple http://www.stephanerangaya.com au lieu de http://srangaya.myopenid.com):
<link rel="openid.server" href="http://serveur_OpenID" />
<link rel="openid.delegate" href="http://identifiant_OpenID/" />
À vous ensuite de modifier l'adresse du serveur OpenID (par http://www.myopenid.com/server par exemple) et l'adresse de votre page OpenID (par http://srangaya.myopenid.com par exemple).
Conclusion
OpenID est donc un système d'authentification assez prometteur et assez bien documenté. De nombreux sites sont en train d'adopter ce système, je vous invite donc, si vous êtes développeur, à y jeter un coup d'œil :)
Quelques lectures
