2010-01-11 6 views
1

J'essaye d'implémenter un serveur OpenID en PHP qui supporte la sélection d'identifiants (certains appellent cette identité dirigée, qui est en fait un cas plus spécifique de sélection d'identificateur). En d'autres termes, un utilisateur peut entrer un URI générique en tant qu'identifiant OpenID, se connecter et choisir quel identifiant renvoyer au consommateur OpenID.OpenID Identité identifiée/Sélection d'identifiant en PHP

Par exemple, si un utilisateur entre mysite.com comme indentifier, après qu'ils se connectent, ils seraient incités à retourner l'un des deux identifiants au consommateur OpenID (peut-être de mysite.com/myusername ou monsite .com/anon-ad83f38c98b98).

L'avantage de ce système est que vous avez la possibilité d'utiliser un seul identifiant parmi de nombreux sites, ou d'utiliser des identifiants uniques pour des sites individuels.

Quoi qu'il en soit, je n'ai pas réussi à trouver un bon tutoriel sur la façon d'implémenter cette partie de la spécification OpenID en PHP. En fait, la plupart des recherches m'ont conduit à des questions sans réponse sur les forums ou même sur le débordement de la pile. Est-ce que quelqu'un sait d'une bibliothèque de PHP qui peut manipuler la sélection d'identificateur ou l'identité dirigée? Si oui, existe-t-il des tutoriels expliquant comment le configurer? J'ai joué avec quelques bibliothèques qui ne le mentionnent pas d'une façon ou d'une autre, mais je n'ai pas encore réussi à le faire fonctionner.

Toute aide est grandement appréciée.

Répondre

1

La documentation est inutile. Avez-vous regardé les bibliothèques de Janrain? Ils ont un consommateur que j'ai implémenté avec succès et aussi un code de serveur que je suppose être implémentable. Jetez un oeil aux fichiers Yadis \ XRIRes et Yadis \ XRI, vous devrez peut-être désosser leur code - c'est ce que je devais faire pour comprendre le consommateur. Je suis actuellement en train d'étudier la possibilité de mettre en place un serveur mais je ne trouve rien de valable pour le moment.

http://openidenabled.com/files/php-openid/docs/2.1.3/OpenID/Auth_Yadis_Yadis.html

+0

J'ai regardé les librairies de Janrain, mais la documentation est sans valeur et je préfère ne pas faire de reverse engineering du code si cela est possible. – inxilpro

+0

Il ne devrait pas être nécessaire d'aller chercher le code Yadis pour une implémentation de serveur, à moins que vous ne vous demandiez quelles sont les constantes de type URI que le consommateur recherche. – keturn

0

php-openid v2 est certainement capable. Et vraiment, la façon dont vous interagissez avec la bibliothèque change assez peu lorsque vous ajoutez une sélection d'identifiant. Lorsque vous obtenez votre Auth_OpenID_ChecKIDRequest, vous pouvez vérifier sa méthode idSelect pour voir si c'est un cas pour la sélection de l'identifiant. Passez ensuite l'identité sélectionnée à Auth_OpenID_ChecKIDRequest.answer().

Le seul autre bit est de s'assurer que vous annoncez ce que la spécification appelle un "élément d'identificateur OP" sur mysite.com/. Si vous diffusez déjà des pages XRDS pour vos identifiants utilisateur, cela fonctionne de la même manière, avec une URL de type différente. Si vous ne l'êtes pas (vous n'avez que la découverte basée sur HTML avec les éléments link), vous pouvez regarder les en-têtes HTTP de myopenid pour un exemple.