J'ajoute la connexion OpenID à une petite application web en utilisant Spring Security 2.0.5. Je veux être en mesure d'identifier les utilisateurs dans mon application en fonction de l'identifiant OpenID avec lequel ils se sont connectés. Cela fonctionne très bien lorsque vous utilisez Verisign en tant que fournisseur; chaque identificateur est un URI spécifique à l'utilisateur comme http://jbloggs.pip.verisignlabs.com/, qui est facilement recherché dans ma base de données utilisateur pour trouver "Joe Bloggs".Pourquoi mon application OpenID reçoit-elle différents Google OpenID de différentes machines client pour le même utilisateur?
Toutefois, lorsqu'un utilisateur saisit l'identifiant Google OpenID standard (www.google.com/accounts/o8/id), l'identifiant envoyé par Google après une authentification réussie (quelque chose comme https://www.google.com/accounts/o8/id?id=AItOawnKrvwaGk9YU0q9STQGj9G7XIRlNmsjuiI) varie d'une machine à l'autre pour la même utilisateur. Cela rend impossible (ou du moins pas pratique) d'identifier cet utilisateur en recherchant son identifiant dans ma base de données utilisateur.
Comment puis-je faire en sorte que Google envoie toujours le même identifiant pour le même utilisateur Google? FWIW, l'application s'exécute dans JBoss 3.2.7 avec Tomcat 5.0.28 intégré.
OpenID est nul, acceptez-vous? – jayarjo
Non, j'aime la commodité de l'identité fédérée. Qui veut se souvenir de 50 noms d'utilisateur et mots de passe? Ou pire, confier le même nom d'utilisateur et mot de passe à 50 sites Web, qui ne sont pas tous fiables? –
Je ne dis pas que cette idée est nulle. En fait c'est pas. C'est bien. Même avec tous les problèmes potentiels. Je pense que la mise en œuvre est lâche et défectueuse et diffère d'un fournisseur à l'autre, comme s'il n'y avait aucune norme définie. – jayarjo