Estoy agregando el inicio de sesión de OpenID a una pequeña aplicación web utilizando Spring Security 2.0.5. Deseo poder identificar usuarios dentro de mi aplicación basados en el identificador de OpenID con el que iniciaron sesión. Esto funciona bien cuando se usa Verisign como proveedor; cada identificador es un URI específico del usuario como http://jbloggs.pip.verisignlabs.com/, que se busca fácilmente en mi base de datos de usuario para encontrar "Joe Bloggs".¿Por qué mi aplicación OpenID recibe diferentes Google OpenID de diferentes máquinas cliente para el mismo usuario?
Sin embargo, cuando un usuario introduce el identificador de Google OpenID estándar (www.google.com/accounts/o8/id), el identificador enviado por Google tras la autenticación exitosa (algo así como https://www.google.com/accounts/o8/id?id=AItOawnKrvwaGk9YU0q9STQGj9G7XIRlNmsjuiI) varía de una máquina a para el mismo usuario. Esto hace que sea imposible (o al menos impracticable) identificar a ese usuario buscando su identificador en mi base de datos de usuario.
¿Cómo puedo conseguir que Google envíe siempre el mismo identificador para el mismo usuario de Google?
FWIW, la aplicación se ejecuta en JBoss 3.2.7 con Tomcat 5.0.28 incorporado.
OpenID es una mierda, ¿estás de acuerdo? – jayarjo
No, me gusta la conveniencia de la identidad federada. ¿Quién quiere recordar 50 nombres de usuario y contraseñas? O, lo que es peor, confíe el mismo nombre de usuario y contraseña a 50 sitios web, no todos en los que se puede confiar. –
No digo que esa idea apesta. De hecho, es 'no'. Es genial. Incluso con todos los problemas potenciales. Creo que la implementación es floja y defectuosa, y difiere de proveedor a proveedor, como si no hubiera ningún estándar definido. – jayarjo