RelMeAuth-fr

From Microformats Wiki
Jump to navigation Jump to search

RelMeAuth est un standard ouvert proposé pour utiliser les liens rel-me vers les profils sur les services supportant OAuth pour l'authentification que ce soit via ces profils ou votre propre site.

RelMeAuth est la technologie derrière connexion-web.

support RelMeAuth

utilisateurs

Voir connexion web

Voici une explication plus technique :

Utilisez rel="me" sur votre site personnel, et saisissez votre site personnel comme votre adresse web sur les sites avec une connexion web (RelMeAuth).

Étapes :

1. Ajoutez des liens rel="me" à vos autres profils.

Ajoutez rel="me" aux liens provenant de votre page d'accueil personnelle vers vos différents profils sur d'autres services.

2. Éditez vos autres profils pour faire un lien retour vers votre site.

Éditez vos autres profils et réglez le champ "home page" ou "page d'accueil" ou "URL" vers votre site personnel.

Voici une [des sites de profil qui ont des champs URL et supportent rel-me].

3. Il n'y a pas d'étape 3. C'est terminé.

Désormais sur tout site qui utilise une connexion (connexion web) RelMeAuthNow (essayez par ex. le prototype RelMeAuth), saisissez simplement votre URL de site personnel, et ce code RelMeAuth du site vous connectera en vous authentifiant avec l'un des profils sociaux que vous avez reliés (par ex. Twitter).

exemples dans la jungle

page d'accueil simple

La page personnelle de Tantek http://tantek.com/ a (marquage simplifié)

<ul>
<li><a rel="me" href="http://twitter.com/t">Twitter: @t</a></li>
<li><a rel="me" href="http://identi.ca/t">identi.ca: t</a></li>
</ul>

utilisateurs avec des pages de contact séparées

Et si je préfère avoir une page de contact ou "à propos" séparée avec mes liens vers d'autres profils ?

Si vous préférez avoir une page de contact séparée qui lie vers vos autres profils, alors :

  1. ajoutez rel="me" au lien provenant de votre page d'accueil vers votre page de contact
  2. ajoutez rel="me" aux liens provenant de votre page contact vers ces autres profils


plus d'exemples dans la jungle

page contact séparée

La page d'accueil de Jeremy Keith http://adactio.com/ has (marquage simplifié)

<ul>
<li><a rel="me" href="/journal/">Journal</a></li>
<li><a rel="me" href="/contact/">Contact</a></li>
</ul>

et puis aussi :

http://adactio.com/journal/ a (marquage simplifié)

<ul>
<li><a rel="me" href="http://huffduffer.com/adactio/">Huffduffer</a></li>
<li><a rel="me" href="http://twitter.com/adactio/">Twitter</a></li>
<li><a rel="me" href="http://adactio.tumblr.com/">Tumblr</a></li>
<li><a rel="me" href="http://www.last.fm/user/adactio/">Last.fm</a></li>
<li><a rel="me" href="http://www.dopplr.com/traveller/adactio/public">Dopplr</a></li>
<li><a rel="me" href="http://www.vimeo.com/user196031">Vimeo</a></li>
<li><a rel="me" href="http://ffffound.com/home/adactio/found/">Ffffound</a></li>
<li><a rel="me" href="http://readernaut.com/adactio">Readernaut</a></li>
<li><a rel="me" href="http://97bottles.com/people/adactio/">97 Bottles</a></li>
</ul>

préférence d'authentification

Si vous avez une préférence spécifique parmi le(s) service(s) d'authentification, assurez-vous juste que vous listez les liens vers vos profils sur ces autres services dans l'ordre de préférence (sur votre page d'accueil ou votre page contact comme décrit au-dessus)

sites de profils

Faites-vous tourner un site avec des profils ?

N'importe quel site de réseau social ou site similaire ayant des pages de profils-utilisateur devrait :

  1. fournir une interface utilisateur à un utilisateur pour saisir et publier publiquement une URL vers sa page personnelle
  2. publier un lien visible avec rel="me" de la page du profil de l'utilisateur vers sa propre page personnelle

[plupart des sites font déjà cela].

sites d'authentification

Vous faites tourner un site avec des profils d'utilisateurs que vous voulez faire utiliser par vos utilisateurs pour se connecter sur d'autres sites ?

En plus de supporter rel-me comme décrit ci-dessus :

Tout site qui veut permettre aux utilisateurs de se connecter avec ses présentations provenant de ce site sur des sites tiers devrait :

  1. Supporter OAuth (même avec 2.0)
  2. Suivre les conventions de Twitter pour :
    • les chemins endpoint et autres détails de protocole
    • imiter l'interface utilisateur de Twitter pour le flux d'authentification (que ce soit sur le desktop ou le mobile - ils ont fait un travail remarquable)

Fournisseurs RelMeAuth

Les sites qui supportent à la fois rel-me et sont aussi des fournisseurs OAuth :

sites ayant besoin d'une connexion utilisateur

Avez-vous un site sur lequel vous voulez laisser les utilisateurs se connecter avec leurs propres identités ?

Tout site désirant laisser les utilisateurs se connecter avec leurs propres identités devrait :

  1. fournir une interface utilisateur pour que les utilisateurs saisissent ou choisissent leur identité en ligne préférée (par ex. leurs propres URLs)
  2. exécuter une authentification RelMeAuth comme décrit plus bas

comment ça marche

résumé algorithme

Résumé de l'algorithme de l'authentification RelMeAuth

  • input : une identité utilisateur (URL) pour s'authentifier
  • output : succès ou annulation authentification ou pas d'URLs authentifiables trouvées
  1. démarrer avec une URL d'identité utilisateur (par ex. provenant de l'IU, ou d'un cookie provenant des précédentes connexions, etc.)
  2. itérer à travers les liens entrants rel-me sur l'URL de l'identité utilisateur (n'importe lesquelles des sous-pages locales rel-me si nécessaire)
    1. si
      1. une destination rel-me est trouvée (HTTP Get réussi, en suivant n'importe lesquelles des redirections)
      2. et des liens rel-me en retour vers l'URL identité de l'utilisateur
      3. et a un endpoint OAuth
      4. alors faire authentification OAuth
      5. si authentification réussie, c'est fini, l'utilisateur a été authentifié avec l'URL identité utilisateur, exit
      6. si elle est rejetée, l'utilisateur a annulé, alors annuler la totalité du processus d'authentification, exit
    2. continuer itération avec le prochain lien rel-me s'il y en a
  3. pas d'URLs authentifiables trouvées (que ce soit pas du tout, ou n'importe laquelle fournie comporte d'autres erreurs, 404, pas de réponse, pas de endpoint OAuth, autres erreurs OAuth)


algorithme détaillé

  • input: a user identity (URL) to authenticate
  • output: success or cancel authentication or no authenticatable URLs found
  1. start with a user identity URL (e.g from the UI, or from a cookie from previous login etc.)
  2. if the URL is an OAuth provider
  3. then try authenticating with it (we prefer the user's own site for auth)
    1. if it succeeds, exit
    2. if canceled, exit
    3. otherwise continue
  4. iterate through their outbound rel-me links on the user identity URL (first through direct rel-me links to external sites in order, then iterate through URLs deeper into the personal site in order, e.g. to a contacts page, and iterate through rel-me links from there to external sites in order, then the next breadth-first local rel-me page from the identity URL if necessary)
    1. if
      1. a rel-me destination is up (HTTP Get succeeded, following any redirects)
      2. and rel-me links back to the user identity URL
      3. and has OAuth endpoint
      4. then do OAuth authentication
      5. if authentication succeeded, you're done, the user has been been authenticated with the user identity URL, exit
      6. if it was rejected, the user canceled, thus cancel the entire authentication process, exit
    2. continue iteration with the next rel-me link if any
  5. no authenticatable URLs found (either none at all, or any provided had some other error, 404, no response, no OAuth endpoint, other OAuth error)


implémentations open source

Il existe quelques librairies opensource que les sites peuvent utiliser pour implémenter RelMeAuth de manière à ce que les utilisateurs puissent se connecter avec leurs propres identités.

Python

PHP

Ruby

  • IndieAuth par Aaron Parecki contient du code Ruby pour exécuter une authentification RelMeAuth authentication, mais actuellement intégré à l'intérieur du code indieauth.com en général
    • To Do : Séparer Ruby gem pour implémentation Ruby de RelMeAuth


problématiques

  • Comment trouvez-vous le endpoint OAuth pour n'importe quel site/service de profil utilisateur ? -Tantek
    • Utilisez le mécanisme de découverte OAuth 2.0 si c'est supporté
    • Utilisez une liste blanche de site fournisseur vers un endpoint OAuth
    • Essayez les chemins endpoint Twitter OAuth sur d'autres sites pour voir s'ils fonctionnent - en supposant que beaucoup de fournisseurs OAuth imiteront simplement l'exemple de Twitter comme suggéré.
      • Cette découverte par technique de convention fonctionnera par exemple sur :
  • How do you get an appID to use with any given site's OAuth? -Tantek
    • This appears to still be a manual process, per site, and thus a legitimate limitation of RelMeAuth in comparison to say OpenID.
      • Some services are supporting appkey/secret pair anonymous/anonymous for mobile/desktop apps already. Unsure how popular this is Singpolyma 13:51, 23 April 2010 (UTC)
  • OAuth is for authorization, and as such gives the site I'm ident asserting to access to my account on the id service. This is very bad. Suggested solution: use OpenID instead. Singpolyma 13:51, 23 April 2010 (UTC)
    • OAuth actually suggests granularity in access rather than blanket access (OAuth IETF draft, see Sec 4.8):

      When implementing this protocol, servers should consider the types of access resource owners may wish to grant clients, and should provide mechanisms to do so. Servers should also take care to ensure that resource owners understand the access they are granting, as well as any risks that may be involved.

      Thus for RelMeAuth purposes, the RelMeAuth "consumer"/library should ask merely for "authentication" rather than read, write, update, or delete access. One exception is the "share" scenario, where a site lets a user RelMeAuth login via another site (e.g. Twitter), and then provides a UI for the user to share from that site to Twitter - in that case request auth/read/write access granularity makes sense. Tantek 22:46, 26 April 2010 (UTC)
  • After authing with OAuth, how do you know what user it is that auth'd? OAuth specifically does not tell you that information... Singpolyma 13:54, 23 April 2010 (UTC)
    • Twitter provides user information via the OAuth token and their API, it is recommended that other OAuth providers follow this API convention while OAuth is evolved to provide to capability. Tantek 22:46, 26 April 2010 (UTC)

historique

Le 2010-02-01 Tantek a présenté la base et Jeff Lindsay a suggéré le nom de RelMeAuth.

Lors d'une relance, Tantek suggérait le simple protocole qui suit pour RelMeAuth :

RelMeAuth works for any #OAuth + rel-me site, and enables auto-fallback with use of alternate identities for authentication:

  1. user enters their site URL
  2. iterate through their outbound rel-me links
  3. if
    1. a rel-me destination is up, and
    2. rel-me links back to user's site, and
    3. has OAuth endpoint,
    then do OAuth authentication.

Thus user links to their RelMeAuth profiles in preference order, and authentication code tries them in order. e.g. Twitter, Identi.ca, ... etc.

Plus tard dans la soirée, Tantek, Jeff Lindsay, Paul Tarjan et d'autres ont discuté de RelMeAuth lors du microformats dîner à Mountain View et ensuite Jeff et Paul ont implémenté RelMeAuth dans une librairie open source Python lors du Hacker Dojo et l'ont discutée/testée sur IRC.

http://krijnhoetmer.nl/irc-logs/microformats/20100203

Moins de 24 heures pour passer du concept à l'implémentation opensource.

articles billets commentaires

vendor specific sign in

Les méthodes commerciales suivantes spécifiques à la connexion ont réussi et sont bien plus utilisées que les efforts précédemment décrits d'identifé URL (par ex. OpenID)

Sign-in-with-Twitter.png

facebook-twitter-connect.gif

Voir les articles les comparant/mettant en perspective :

User-facing web-sign-in functionality (including "( Web sign-in )" button graphic) must be at least as simple, easy, and trustworthy as the these vendor specific sign in methods.


en rapport