De l’importance de Webfinger dans la décentralisation pour StatusNet

closeCet article a été publié il y a 12 ans 6 mois 11 jours, il est donc possible qu’il ne soit plus à jour. Les informations proposées sont donc peut-être expirées.

Un rappel sur ce protocole utilisé par StatusNet. Un protocole important dans la mise en place de solutions de communication décentralisée sur Internet et les services Web.

Pour beaucoup StatusNet est resté un logiciel comme les autres, une alternative libre à Twitter qui permet à identi.ca d’exister. Une des conséquences que j’ai découverte récemment est qu’il y a un petit détail qui a toute son importance dans une approche décentralisée, mais qui a échappé faute d’usages à certains utilisateurs d’identi.ca : le webfinger.

WebFinger, la version web de Finger

Il s’agit d’une extension de l’antique commande Finger Unix qui permet en indiquant une adresse email de récupérer des informations sur la personne. WebFinger utilise principalement les protocoles HTTP et XRD pour réaliser cette opération. Un webfinger a donc la même forme qu’une adresse email : identifiant@mondomaine.com.

Il suffit de donner cet identifiant à un service web pour que celui-ci soit en mesure d’interroger au travers de ce protocole standard le serveur qui héberge vos informations. Mondomaine.com permet de trouver la machine, et l’identifiant sert à interroger celle-ci pour obtenir des informations sur un utilisateur donné.

WebFinger et StatusNet

C’est ce protocole qui est intégré à Ostatus un « meta-protocole » mettant en oeuvre aussi PubSubHubbub, Salmon, et Activity Streams et qui est au cœur des mécanismes de décentralisation de SatusNet.

Un mécanisme que l’on a tendance à oublier dès lors que l’on ne vit que sur identi.ca et auquel on est confronté uniquement lorsque l’on s’abonne à des personnes extérieures à identi.ca comme moi.

Une des confusions classiques consiste à vouloir ouvrir un compte sur l’instance de la personne. Un réflexe acquis par des années de pratiques d’un web qui n’a souvent que faire de simplifier la vie se ses utilisateurs et qui cherche plus souvent à les capter pour de mercantiles raisons.

Pour pallier cela, j’avais même dû faire un tutoriel à l’intention de ceux qui voulaient me suivre tout au début lorsque je suis « sorti » d’identi.ca. Il est d’ailleurs toujours parfaitement d’actualité, vous pouvez vous y reporter pour plus de détails sur la procédure où vous serait amené à donner le webfinger fournit par identi.ca sous la forme votrelogin@identi.ca .

Webfinger et les discussions

Lorsque l’on échange entre utilisateurs, il est habituel de désigner celui-ci dans la notice par un @identifiant. La magie opère alors et la personne reçoit la notice. Plusieurs cas de figure :

  • Cette personne est aussi sur identi.ca, donc pas de soucis;
  • Cette personne n’est pas sur identi.ca, mais vous êtes abonné à son compte sur son instance externe à identi.ca, pas de soucis non plus, c’est StatusNet qui grâce aux informations de l’abonnement va trouver les informations manquantes et envoyer la notice vers le bon serveur
  • Cette personne n’est pas sur identi.ca, n’a pas de compte sur celui-ci et vous n’êtes pas abonné à ce dernier : là c’est le drame 🙂

Pour envoyer une notice à une personne à laquelle vous n’êtes pas abonné, il vous faut donner son webfinger complet. Pour moi cela donne donc pscoffoni@status.scoffoni.net. Je reconnais que ce n’est pas terrible comme Webfinger. Mais pour pouvoir utiliser pscoffoni@scoffoni.net, il m’aurait fallu installer StatusNet à la racine de mon domaine et je ne le souhaitais pas.

J’espère que ces quelques explications auront contribué à éclaircir le principe du webfinger et que les pro du sujet m’excuseront si j’ai commis des imprécisions ou des erreurs. Les commentaires sont là en cas de besoin.

Philippe Scoffoni

Je barbote dans la mare informatique depuis 30 ans (premier ordinateur à 16 ans, un ORIC ATMOS) et je travaille à mon compte au travers de ma société Open-DSI. J'accompagne les associations, TPE et PME dans leurs choix et dans la mise en oeuvre se solutions informatiques libres.

5 réponses

  1. Smat dit :

    Merci pour cette explication intéressante. Je suis StatusNet depuis quelques mois et me suis amusé à répertorier les technologies utilisées. OStatus est très prometteur et la décentralisation de StatusNet apporte un réel potentiel. Cet article le rappel, et est une bonne occasion de soutenir ce projet, à notre échelle, surtout avec les derniers évènements de la migration vers la 1.0. Merci.

  2. Olivier M. dit :

    Flute. Je n’avais pas réalisé que le champ « site web » ci-dessus s’attendait à avoir un OpenID. Bref, tout cela n’a pas très bien marché, et j’ai perdu mon commentaire. Je reprends donc en version raccourcie.

    Tu sembles déplorer de ne pas pouvoir utiliser pscoffoni@scoffoni.net comme Webfinger sans installer StatusNet sur le domaine scoffoni.net. Or, justement, WebFinger est bien foutu et permet normalement ce genre de choses. Je me suis permis quelques tests pour m’en assurer.

    Regardons, avec curl ou wget, le contenu de http://status.scoffoni.net/.well-known/host-meta. C’est un fichier XML (un XRD pour être précis) dont le boulot principal est d’indiquer le LRDD. En gros, le XRD est lié à l’hôte (la partie « domaine » du Webfinger) alors que le LRDD référence un utilisateur. Dans ce cas, ton XRD nous annonce le « template » suivant : {uri}.

    On essaye donc de lire le LRDD contenu à http://status.scoffoni.net/index.php/main/xrd?uri=pscoffoni@status.scoffoni.net. On notera au passage que la première requête (celle qui interroge le domaine) est statique (le host-meta pourrait n’être qu’un bête fichier texte rangé au bon endroit), alors que la requête de l’utilisateur fait – assez logiquement – appel à un peu d' »intelligence » côté serveur. Ce sera utile.

    Bref, on obtient un autre XRD, dont le sujet est acct:pscoffoni@status.scoffoni.net (ton Webfinger donc), et qui indique un certain nombre de points d’entrée (endpoints) utiles : ton profil statusnet, ta « clé magique » salmon, etc.

    Mais si on essaye de l’interroger sur http://status.scoffoni.net/index.php/main/xrd?uri=pscoffoni@scoffoni.net – sans rien changer à ta configuration, sinon c’est tricher – on obtient … sensiblement la même chose. A première vue, à part le « Subject », rien ne change. Resterait donc à s’assurer qu’un StatusNet distant s’y laisserait prendre, mais il y a toutes les chances.

    Sans que je sache trop pourquoi (et j’ai la flemme de lire la spec), il semblerait que les applis web qui répondent aux requêtes LRDD aient tendance à être assez tolérance sur la partie « host » des adresses qu’on leur demande de rechercher. En gros, elles semblent partir du principe que « puisque la requête est arrivée jusqu’à moi, les considérations d’hôtes sont sans objet ». C’est peut être un peu présomptueux, mais en tous cas ça fonctionne.

    Il suffirait donc, dans ton cas, d’héberger le /.well-known/host-meta sur scoffoni.net (en plus de status.scoffoni.net) pour que, selon toute probabilité, les gens puissent te suivre en tant que pscoffoni@scoffoni.net.

    A tester 🙂

  3. Philippe dit :

    houlà 🙂 Je vais creuser un peu en effet, c’est pas simple ce que tu m’expliques, mais doit y avoir moyen d’apprendre quelque chose ..

  4. Bonob0h dit :

    @ Philippe … un petit schéma serait de bon aloi 😀 histoire que tout le monde comprennent en un coup d’oeil 😉

  1. 10 octobre 2011

    […] De l’importance de Webfinger dans la décentralisation pour StatusNet Un rappel sur ce protocole utilisé par StatusNet. Source: philippe.scoffoni.net […]