¿Por qué cambia el ID de la implementación de OpenID de Google?
google-openid (1)
Estoy intentando implementar el inicio de sesión de OpenId para una aplicación web. Cada vez que un usuario nuevo que ingresa a través de OpenId creo un nuevo usuario en forma sustentable, y entre los datos almaceno su URL openid, de modo que la próxima vez que inicie sesión con ese usuario.
Estoy probando esto con mi OpenID de Gmail, y el problema es que cada vez que hago esto, Google envía una URL openid diferente, es decir, https://www.google.com/accounts/o8/id?id=SomethingThatChangesFromTimeToTime
Por supuesto, entonces no puedo decir si esto es o no un nuevo usuario. Estoy un poco desconcertado: ¿no debería el identificador de openid siempre permanecer igual?
El identificador de OpenID de Google es más o menos una representación hash de datos múltiples, incluido el host del que proviene la solicitud (más exactamente el parámetro openid.realm
enviado al proveedor). Entonces, si su host cambia de vez en cuando (como el puerto y la dirección ip), la identificación también cambiará de vez en cuando. también usa una solución para este problema. Compruebe estos mensajes:
Aquí hay un extracto de preguntas frecuentes de google:
P: La especificación de OpenID dice que
openid.realm
es opcional, y que si no se proporciona, Google debería usar la URLopenid.return_to
. ¿Eso funcionará?R: Funcionará en el sentido de que el protocolo se completará con éxito. Pero si su
return_to
URL es algo comowww.example.com/authenticate?style=openid-federated_login
, nos solicita que solicitemos a los usuarios que aprueben y confíen en una dirección específica de su sitio, que no es fácil de usar. Además, si omite el parámetroopenid.realm
, nunca podrá cambiar sureturn_to
URL: También cambiará implícitamente el reino y los identificadores de URL de los usuarios de su cuenta de Google.