SPIP-Contrib

SPIP-Contrib

عربي | Deutsch | English | Español | français | italiano

246 Plugins, 178 contribs sur SPIP-Zone, 271 visiteurs en ce moment

Accueil du site > Auteurs, authentification et autorisations > Authentification > OpenID > Authentification OpenID avec SPIP

Authentification OpenID avec SPIP

25 octobre 2009 – par Cedric Morin, elafargue – 35 commentaires

21 votes

Cette version 1.0 du plugin permet à SPIP d’accepter OpenID comme méthode d’authentification des utilisateurs, ainsi que pour l’inscription des nouveaux visiteurs.

Guide d’utilisation rapide

Installez le plugin et activez-le

Modification du profil
Dans votre profil d’auteur, indiquez votre adresse OpenID dans le champ du même nom repéré par le picto OpenID

Login avec OpenID
Le formulaire de login est enrichi par le plugin. Lorsque vous avez un cookie qui permet a SPIP de se souvenir de votre login, le formulaire n’affiche plus que celui-ci, et un message vous rappelant que vous avez enregistré un OpenID. Il ne vous reste plus qu’à valider. Si SPIP ne se souvient pas de vous, il vous propose un formulaire avec les deux champs login et mot de passe, mais en précisant que vous pouvez utiliser votre OpenID en lieu et place de votre login. En fait, comme vous avez enregistré votre OpenID sur votre profil, vous pouvez même vous connecter avec votre seul login, sans indiquer de mot de passe. SPIP essaiera alors automatiquement d’utiliser votre OpenID.

Dans les deux cas, SPIP vous redirige vers votre fournisseur d’adresse OpenID. Il vous reste juste à vous y authentifier et à autoriser le site sur lequel vous voulez utiliser OpenID :

Dans l’exemple ci-dessus, l’utilisateur est déjà logé : le site ne lui demande donc pas son mot de passe, mais si il accepte la demande d’authentification de « fraichdist ». Si il clique sur « Autoriser toujours », à chaque fois qu’il utilisera son OpenID sur le même site, il sera identifié instantanément sans interaction — visible pour l’utilisateur — avec MyOpenID.

Si tout s’est bien passé... vous êtes renvoyé vers SPIP et authentifié !

Notes : l’authentification par identifiant et mot de passe est toujours possible. Sur le formulaire de login, il suffit de cliquer sur [Utiliser un mot de passe]. Ce plugin propose l’utilisation d’OpenID en plus et non à la place des méthodes habituelles.

Inscription avec OpenID
L’inscription des nouveaux utilisateurs directement au moyen de leur adresse OpenID est également rendue possible par le plugin.

Le formulaire d’inscription présente un badge OpenID pour les utilisateurs qui disposent d’une adresse :

En cliquant dessus, le nom et le mot de passe sont remplacés par un seul champ permettant au visiteur d’y saisir son adresse OpenID :

Il est ensuite renvoyé vers son fournisseur OpenID. A son retour, le nom et l’email sont automatiquement remplis si les données renvoyées par le fournisseur le permettent. Dans ce cas, le processus d’inscription se finit par la validation automatique du formulaire. Si il manque des informations, l’utilisateur est invité à complèter le formulaire.

Dans tous les cas, l’adresse OpenID sera enregistrée dans le profil du visiteur, lui permettant de l’utiliser pour s’identifier dans le futur.

Toutefois, afin de vérifier que l’adresse email est bien la propriété du visiteur, la première connexion ne pourra être faites qu’avec le mot de passe envoyé par mail par SPIP, et pas avec l’adresse OpenID.

A propos d’OpenID

OpenID pour l’utilisateur

OpenID (voir http://openid.net/ est un système d’authentification dite « fédérée » ou « décentralisée », c’est à dire qu’il permet à un utilisateur de choisir un « fournisseur d’identité » (en anglais un IDP, Identity Provider) unique. Ensuite, s’il souhaite accéder à un site web compatible OpenID, il lui suffit d’indiquer à ce site le nom de son IDP auquel le site (en anglais RP, Relying Party) déléguera la tâche d’authentifier l’utilisateur. Une explication très claire (mais en anglais) est dispo sur openidenabled.com.

Concrètement, voici à quoi cela correspond comme expérience utilisateur :
-  Alice souhaite s’identifier sur exemple.com. Exemple.com lui propose d’utiliser son OpenID
-  Alice entre son URI OpenID (sous la forme http://alice.myopenid.com) dans le champ de login de exemple.com
-  exemple.com redirige Alice (via son navigateur web) vers myopenid.com
-  Alice indique à myopenid.com si elle accepte de fournir ou non son identité à exemple.com.
-  Alice redirigée vers exemple.com et est maintenant logguée.

Des intérêts multiples pour l’utilisateur

Vous me demanderez « mais à quoi cela peut-il servir ? ».

Hé bien les intérêts sont multiples pour l’utilisateur : tout d’abord, il n’a plus besoin de créer des dizaines de profils sur des dizaines de sites différents, il lui suffit d’avoir un profil unique sur un IDP pour accéder à tout site supportant OpenID. Si on est identifié sur son IDP, on accède immédiatement à tous les sites compatibles sans se réauthentifier, c’est le principe du « Single Sign On ».

Ensuite, cela permet de ne confier ses infos perso (en particulier son mot de passe !) qu’à un seul site auquel on fait confiance : en effet, les sites consommateurs d’OpenID (les RP) ne connaissent que l’OpenID de l’utilisateur, rien de plus, puisque toute l’authentification est déléguée à l’IDP.

Pour élargir le débat, ce type d’authentification décentralisée est ces derniers temps au coeur des discussions sur la nature de l’identité numérique et sa gestion. En effet, ces systèmes ont la particularité d’être, a mon sens pour la première fois, des systèmes de gestion de l’identité qui améliorent la protection de la vie privée, en plaçant l’utilisateur au coeur de la transaction, plutôt que de lui demander de confier à tous ses interlocuteurs des informations personnelles pour tout et n’importe quoi. OpenID (et les autres systèmes de la même famille) permet de choisir à qui l’on fait confiance pour lui donner ses informations d’identité, c’est une amélioration appréciable, ou en d’autres termes, l’inverse de la tendance « Big brother »... .

Pour en savoir plus

Sur les enjeux de l’identité numérique :
-  Identity 2.0 : LA référence sur le sujet, avec des présentations absolument lumineuses de Dick Hardt sur l’identité numérique à l’heure du Web 2.0. Note pour les allergiques au marketing : dépassez votre allergie pour 5 minutes, allez voir par vous-mêmes, çela ouvre des perspectives.
-  OpenID.net : le site qui pointe vers toute la sphère OpenID, un point de passage obligé.
-  MyOpenID.com : si vous voulez vous créer un OpenID, ce site vous en propose, c’est gratuit, c’est parfait pour tester.
-  OpenIDenabled : ensuite, pour développer, ce site est une bonne ressource.

Et le plugin, dans tout cela ?

Un des aspects sympathiques d’OpenID est qu’on peut en général utiliser son propre site web comme identifiant OpenID (oui, un OpenID se présente sous la forme d’un URL, par exemple : http://edouard.lafargue.name/). Les profils utilisateurs de SPIP permettant déjà d’entrer l’adresse de son site web, c’est ce champ qui sera utilisé par le plugin. Comme cela, on évite de surcharger SPIP.

Mécanisme de l’authentification OpenID
Pour faire simple : un site qui souhaite authentifier un utilisateur avec un OpenID récupère l’OpenID en question, et lance l’authentification proprement dite, en redirigeant l’utilisateur vers son IDP, et en fournissant à l’IDP l’adresse de retour sur le site où renvoyer l’utilisateur après authentification réussie (ou non). En option, le site peut demander à l’IDP des informations supplémentaires sur l’utilisateur, comme adresse email, âge, ou toute autre précision. L’IDP demandera alors à l’utilisateur s’il l’autorise à communiquer ces éléments au site ou non. Encore une fois, voir openidenabled pour plus de détails.

Identification dans SPIP
Dans SPIP, la cinématique d’authentification est la suivante : SPIP affiche le formulaire de login, qui fait la demande d’identifiant et de mot de passe.

Après validation, le traitement du formulaire essaye d’identifier l’utilisateur par les différentes méthodes disponibles (par défaut SPIP, puis LDAP). Le plugin ajoute la méthode OPENID qui va se charger de repérer la saisie d’une adresse OpenID, et renvoyer l’utilisateur vers son fournisseur pour lui permettre de s’y identifier.

L’utilisateur revient ensuite sur la page d’origine sur le site SPIP, ou le plugin reprend la main pour finir le processus, et verifier que les données renvoyées par le fournisseur OpenID permettent d’identifier à coup sûr l’auteur SPIP correspondant. Dans ce cas, il est logé automatiquement et envoyé vers sa page de destination.

Retour en haut de la page

35 Messages de forum

Voir toute la discussion

Pages 1 | 2 | 3 | 4

  • Répondre à ce message

    14 novembre 2009 19:21, par Tadzio

    A priori, cela ne stocke rien dans la table auteur. Quand je documente le champ OpenID du profil auteur avec "http://id.monsite.com/identity/nom" et que je valide "Enregistrer", j’obtiens le message d’erreur "Cette adresse OpenID ne semble pas valide". Si je valide une nouvelle fois "Enregistrer", le profil auteur se ferme et je reviens à la page d’accueil de l’auteur sans que le champ OpenID ait été enregistré et sauvé dans la base...
    Par contre, cela marche très bien avec un OpenID de la forme "http://nom.myopenid.com".

  • Répondre à ce message

    14 novembre 2009 13:08, par Matthieu Marcillaud

    parfois c’est simplement le « / » final ou non en fonction des openid qui pose problème… il te faudrait regarder dans le base ce qui est stocké comme openid sur ton auteur spip, et dans tmp/openid.log ce qui est effectivement envoyé au fournisseur openid… peut+être que ça te donnera des pistes.

  • Répondre à ce message

    14 novembre 2009 08:42, par Tadzio

    Re :

    Pour faire suite à mon message précédent, devant l’absence de contact avec OpenID France, nous avons décidé d’installer notre propre serveur d’identité OpenID. Les identités qu’il fournit sont de la forme "http://id.monsite.com/identity/nom". Quand on essaie de documenter les profils auteurs avec ces OpenIDs, elles ne sont pas reconues, et on obtient le message "Cette adresse OpenID ne semble pas valide". Comment et où faut-il modifier le code de votre plugin pour que nos OpenIDs soient validées et utilisables ???

    Merci d’avance pour votre aide !

  • Répondre à ce message

    4 novembre 2009 17:29, par Tadzio

    Bonjour !

    Je viens d’installer le plugin sur mon site, et après quelques problèmes avec la commande PHP error_log() de la librairie OpenID (2.1.3), résolus avec mon hébergeur, tout fonctionne bien !

    Parmi les utilisateurs du plugin, quelqu’un pourrait-il me confirmer si après avoir validé le formulaire SPIP login ou inscription, il apparait pendant quelques secondes dans le navigateur une page blanche avec un bouton "continuer" avant d’être redirigé vers un serveur myopenid et revenir à SPIP ???

    Sinon, OpenID France est-il opérationnel ? Actuellement, je renvoie tout le monde à s’inscrire sur myopenid.com (en anglais), car il est impossible de s’inscrire sur le site français (personne ne reçoit d’e-mails de confirmation) et personne ne répond quand on les contacte...

    Merci pour vos réponse, et félicitations pour ce plugin !

  • Répondre à ce message

    31 octobre 2009 12:02, par gilles_tagada

    Suite à mon précédent message, J’ai réussi à faire fonctionner le plugin en modifiant la ligne 132 du fichier inc/openid.php de

    @define(’_DIR_LIB’, _DIR_RACINE . ’lib/’) ;

    en

    @define(’_DIR_LIB’, _DIR_RACINE . ’ecrire/lib/’) ;

  • Répondre à ce message

    31 octobre 2009 11:57, par gilles_tagada

    Bonjour,

    Après avoir activé le plugin, je n’arrive pas à ajouter mon OpenID dans ma fiche. Lors de la validation, j’obtiens les erreurs suivantes :

    Warning : chdir() [function.chdir] : No such file or directory (errno 2) in /var/www/sauvegarde/plugins/openid/inc/openid.php on line 139

    Warning : require_once(Auth/OpenID/Consumer.php) [function.require-once] : failed to open stream : No such file or directory in /var/www/sauvegarde/plugins/openid/inc/openid.php on line 140

    Fatal error : require_once() [function.require] : Failed opening required ’Auth/OpenID/Consumer.php’ (include_path=’. :/usr/share/php :/usr/share/pear’) in /var/www/sauvegarde/plugins/openid/inc/openid.php on line 140

    Or, j’ai vérifié le fichier Auth/OpenID/Consumer.php est bien dans /ecrire/lib/php-openid-2.1.3

    Version SPIP : 2.0.9 [14357] Version du plugin : 1.0

  • Répondre à ce message

    31 octobre 2009 09:41, par frazck

    Merci Cedric pour ta réponse. Effectivement cela venait de ma mise à jour. J’avais ajouté le formulaire de login dans mon squelette (je voulais le personnaliser par la suite). Maintenant que je l’ai supprimé, SPIP va bien cherché le bon formulaire de login (dans le répertoire prive) de SPIP. Et maintenant, tout fonctionne correctement.

  • Répondre à ce message

    30 octobre 2009 18:59, par Cedric Morin

    Pour utiliser le plugin avec la branche de développement 2.1, il faut une version 2.1 complètement à jour, ce qui n’est pas ton cas visiblement (il y a eu de grosses modifs sur la branche dev pour permettre que les plugin de SSO soient plus simple à développer et plus robustes).

  • Répondre à ce message

    30 octobre 2009 18:47, par frazck

    En ce qui me concerne, j’utilise SPIP 2.1 et j’obtiens le message :

    Call to undefined function auth_url_retour_login() in .../www/plugins/openid/spip_2_1/auth/openid.php on line 52

    Le logo openid n’apparait pas dans le champ utilisateur de la page de login par contre dans la zone Identifiant openid de ma fiche auteur, il apparait.

  • Répondre à ce message

    26 octobre 2009 19:19, par Haqqtiviste

    ok géniaaaaaaaal

    merci

    le /lib au bon endroit

    la bonne définition de login

    ça roule

    merci encore

Pages 1 | 2 | 3 | 4

Répondre à cet article

Retour en haut de la page

Ça discute par ici

  • Formulaire de participation à un événement

    23 janvier – 17 commentaires

    Cet article tente de rassembler des informations au sujet de l’affichage d’un formulaire de participation aux événements gérés par le plugin Agenda développé par Cédric Morin. La version 2 du plugin Agenda permet d’afficher dans l’espace public des (...)

  • Le Squelette Zpip

    11 novembre 2009 – 119 commentaires

    Zpip [1] est un squelette réutilisable, modulaire et disposant d’une galerie de thèmes. Il est issu d’une fusion des projets Zesty et SPIP-Zen. Installer Zpip Pour installer Zpip et jouer avec sans plus attendre, il suffit de suivre le guide (...)

  • Plugin Pages uniques

    11 décembre 2008 – 74 commentaires

    Allez, avouez... il ne vous est jamais arrivé d’avoir besoin d’articles qui ne sont rattachés à aucun rubriquage particulier ? Des articles uniques, n’ayant ni de thème, ni de rapport avec aucun autre ? Ou encore des articles pour lesquels vous avez (...)

  • Le Couteau Suisse

    4 mai 2007 – 835 commentaires

    Ce plugin propose d’introduire facilement de simples fonctionnalités supplémentaires à SPIP et qui s’avèrent rapidement indispensables ! Par exemple : des filtres supplémentaires, des balises pratiques, des facilités typographiques, le contrôle de (...)

  • Squelette Median

    22 juin 2009 – 77 commentaires

    Un squelette généraliste, valide XHTML, et configurable. Sites de démonstration : en es fr