openid google-openid

¿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 URL openid.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 como www.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ámetro openid.realm , nunca podrá cambiar su return_to URL: También cambiará implícitamente el reino y los identificadores de URL de los usuarios de su cuenta de Google.