为什么 Google 的 OpenID 实现的 ID 会发生变化?
我正在尝试为 Web 应用程序实现 OpenId 登录。每当新用户通过 OpenId 登录时,我都会在系统上创建一个新用户,并在数据中存储他们的 openid URL,以便下次他们使用该用户登录时。
我正在使用 Gmail OpenID 对此进行测试,问题是每次我执行此操作时,Google 都会发送不同的 openid URL,即 https://www.google.com/accounts/o8/id?id=SomethingThatChangesFromTimeToTime
当然,我无法判断这是否是新用户。我有点困惑:openid 标识符不应该始终保持不变吗?
I'm trying to implement OpenId login for a web application. Whenever new user who logs in via OpenId I create a new user on the sustem, and among the data I store their openid URL, so that next time they login with that user.
I'm testing this with my Gmail OpenID, and the problem is that everytime I do this, Google sends a different openid URL, that is, https://www.google.com/accounts/o8/id?id=SomethingThatChangesFromTimeToTime
Of course I'm then not able to tell wheter this is or not a new user. I'm a bit puzzled: shouldn't the openid identifier always remain the same?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
Google 的 OpenID 标识符或多或少是多个数据的哈希表示,包括请求来自的主机(更准确地说是发送给提供商的
openid.realm
参数)。因此,如果您的主机不时发生变化(例如端口和IP地址发生变化),那么ID也会不时发生变化。 StackOverflow 也使用了解决此问题的方法。查看这些帖子:以下是来自 google 的常见问题解答摘录:
Google's OpenID identifier is more or less a hashed representation of multiple data including the host the request came from (more exactly the
openid.realm
parameter sent to the provider). So if your host changes from time to time (like the port and ip address changes), then the ID will change from time to time too. StackOverflow uses a workaround for this issue too. Check these posts:Here is an FAQ excerpt from google: