2010-07-14 24 views
0

J'essaie d'implémenter un propre point de terminaison OpenID basé sur les comptes d'utilisateur SMF. J'ai basé mon code sur phpMyOpenID et un code d'autorisation SMF.Comment OpenID diffère-t-il entre les différentes connexions sur le même point de terminaison OpenID?

Cela fonctionne très bien jusqu'à présent. Je peux utiliser le point de terminaison pour me connecter/m'enregistrer sur n'importe quel site. Si je ne suis pas connecté sur le SMF, il me demandera ma connexion et si cette connexion SMF réussit, elle l'accepte.

Cependant, il semble qu'il ne diffère pas entre les différentes connexions SMF. C'est à dire. un autre utilisateur a signalé qu'il a essayé d'utiliser le point de terminaison sur le site X, s'est connecté avec son compte SMF et a atterri sur mon compte utilisateur sur le site X (j'ai enregistré le point de terminaison OpenID plus tôt sur ce site).

Je suppose que je dois envoyer en quelque sorte le login SMF ou le rendre en quelque sorte unique par connexion SMF. Comme c'est probablement trivial ce que je dois faire, j'ai pensé que je demanderais ici sur SO - peut-être il y a aussi plus de choses que j'ai besoin de réparer.

Le code (juste PHP), si vous voulez jeter un oeil, est ici: http://github.com/albertz/smf-openid-server

Ou peut-être décrire exactement ce que je dois faire pour le rendre unique pour chaque connexion de SMF.

Un autre projet que je prévois est un client OpenID dans un jeu C++ multijoueur. L'hébergeur aura la possibilité de n'autoriser que les connexions des personnes pouvant s'authentifier via OpenID. Aussi je veux permettre à seulement certaines personnes de se connecter. Quel est le moyen courant d'obtenir une chaîne unique basée sur une connexion OpenID? Dans ce cas, j'ai pensé à quelque chose comme http://{smf-openid-endpoint}/{smf-user} ou http://www.google.de/profiles/{google-user}. Qu'est-ce qu'une façon canonique d'obtenir une telle chaîne?

Je pense que cette autre question peut être liée à ma question principale, c'est pourquoi je la mets ici aussi.


Voir aussi la question connexe: Is the identifier URL unique? What are the different terms?

Répondre

1

Il semble que la première demande de l'utilisateur final que je reçois est checkid_setup. Sur cette réponse, je peux spécifier une URL unique (ce que j'appelle la chaîne unique dans ma question) dans le champ openid.identity. Je l'ai fait dans mon code maintenant et cela semble fonctionner. C'est à dire. Je peux entrer l'URL générale du point de terminaison OpenID (par exemple sur SourceForge) et l'étendre automatiquement de la manière que j'ai suggérée dans ma question.

Pour répondre à ma deuxième question: Il semble que l'URL d'identificateur vérifiée elle-même soit unique, donc cela pourrait être utilisé. Cela peut parfois sembler énigmatique (par exemple, dans le cas de Google, c'est juste un peu de hachage). Donc, cela peut être utilisé en interne pour différer entre différents utilisateurs. Pour la représentation graphique, je peux montrer le vrai nom d'utilisateur ou l'adresse mail que je devrais également obtenir de l'authentification OpenID.