【问题标题】:is openid.claimed_id static?openid.claimed_id 是静态的吗?
【发布时间】:2011-01-04 08:50:21
【问题描述】:

我正在阅读有关 Federated Login for Google Account Users 的信息,以了解如何让用户使用他们的 Google 帐户登录网络应用程序。

因此,在流程结束时,Google 会返回一个 Google 提供的标识符,该标识符附加为 openid.claimed_id。这意味着 Web 应用程序使用此标识符来识别用户并允许访问应用程序功能和数据。我的问题是,这个标识符是静态的吗?我可以使用此标识符重复识别同一用户吗?

【问题讨论】:

    标签: login openid account


    【解决方案1】:

    是的。将 openid.claimed_id 值视为用户名。尤其是对于 Google,但对于任何真正实现“定向身份”的 OpenID 提供者来说都是如此,不要认为此用户名与其他网站相关。除了您自己的网站之外,任何其他依赖方都会根据设计为同一 Google 用户获得不同的 claim_id 值。

    另外,请务必将此claimed_id 视为case sensitive

    【讨论】:

      【解决方案2】:

      你的问题的具体答案见Googles OpenID API documentation

      Google 提供的标识符与用户的实际 Google 帐户名或密码无关,是一个持久值;即使用户更改了他们的 Google 用户名和/或电子邮件地址,它也保持不变。这个标识符也是一个“定向身份”,即谷歌向每个依赖方返回一个不同的值。 Google 使用请求参数 openid.realm 来识别依赖方,因此如果第三方应用决定更改此值,所有用户标识符都会更改。

      【讨论】:

      • 最后一句话我怎么强调都不过分。 “如果第三方应用决定改变这个值,所有的用户标识符都会改变。”这是谷歌实现的一个小特性。所以除了 那个 细节,是的,claim_id 是静态的......
      【解决方案3】:

      事实上,我刚刚遇到了一个实例,其中我的测试用户的 google claim_id 已更改。我即将在我的应用程序中实现 OpenID,但响应数据中的 claim_id 显然没有任何原因发生了更改。

      在过去的几周里,我一直在使用这个帐户进行测试,并且 正如预期的那样,claim_id 一直都是一样的。然后嗬嗬,变了!多次查看响应数据验证,获取数据的底层代码没有变化。

      目前我不确定如何处理这个问题,但我认为这会让我陷入困境。初始身份验证后,用户注册到站点(如您所料)并设置屏幕名称。如果 claim_id 发生了变化,我们如何验证它是同一个用户?根据最佳实践,我们当然不能使用电子邮件地址。

      编辑

      现在我脸上有馅饼!我错过了一个小细节,结果证明这是一个主要细节。我更改了我的开发环境并托管在不同的 v-host 上。这有效地改变了领域,这将根据文档改变 claim_id 响应。

      这对我来说是一个很好的教训,因为我即将在我的代码中自动设置领域的子域上实现 OID。现在我为自己省去了一个头疼的问题,因为如果不破坏身份,我将无法在所有其他子域中使用相同的用户数据库。

      updating realm

      更多信息

      顺便说明一下 - 即使您正在为您的某个子域开发 OpenID 解决方案,为您的顶级域指定领域也是谨慎的做法。

      例如,openid.realm = http://*.yourdomain.com

      它将允许您在所有子域中扩展您的登录页面,并在它们之间保持用户身份。

      (可选)经过身份验证的领域。标识结束的域 要求用户信任。 (例如:“http://*.myexamplesite.com”) 该值必须与定义的域一致 openid.return_to。如果未定义此参数,Google 将使用 openid.return_to 中引用的 URL。

      【讨论】:

      • 顺便说一下,我向这个特定的 gmail 帐户添加了一个日历,就在 claim_id 发生变化的同时。我不确定时间,因为直到大约 36 小时后我才知道新的 claim_id。不确定这是否与它有关,但希望不会。我真的希望我错了这一切,我只是错过了一些东西 - 如果我弄错了,我一定会回复!
      猜你喜欢
      • 2013-04-21
      • 1970-01-01
      • 2018-02-20
      • 2015-08-06
      • 2011-06-23
      • 2015-06-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多