【问题标题】:OpenID: is the identifier URL unique? what are the differences between the identifiersOpenID:标识符 URL 是否唯一?标识符之间有什么区别
【发布时间】:2011-03-16 16:34:09
【问题描述】:

OpenID specs 中,它说:

  • 标识符:

标识符只是一个 URL。 OpenID 身份验证协议的整个流程是关于证明最终用户是、拥有一个 URL。

  • 声明的标识符:

最终用户自称拥有的标识符,但尚未得到消费者的验证。

  • 经过验证的标识符:

最终用户已向消费者证明他们拥有的标识符。

  • 身份提供者:

也称为“IdP”或“服务器”。这是消费者联系的 OpenID 身份验证服务器,以获取最终用户拥有声明标识符的加密证明。 最终用户如何向其身份提供者进行身份验证不在 OpenID Authenticaiton 的范围内。

  • 标识符 URL 是否唯一?究竟是什么?

  • 如果不是唯一的,是否有任何唯一的东西可以让消费者在同一个 OpenID 端点 URL 上的不同用户之间有所不同?

  • IdP 和标识符 URL 有什么区别?

在其他地方,我读过术语“OpenID 端点 URL”。

  • OpenID 端点 URL 是否与 IdP 相同?所以 IdP 也是一个 URL?

我们以 Google 的 OpenID 为例。当某个站点要求我使用 OpenID 登录时,我使用 OpenID URL https://www.google.com/accounts/o8/id。那是标识符URL吗?如果是这样,它显然不是唯一的。通常,当我在该站点上查看有关我的 OpenID 登录的帐户设置时,它不会显示输入的 URL,但它以某种方式扩展了它,例如 https://www.google.com/accounts/o8/id?id=AltOawk...。该 URL 现在看起来有点独特。

  • https://www.google.com/accounts/o8/id 现在的用途是什么?那是 OpenID 端点 URL 吗?或者是 IdP URL(如果不同的话)?

  • https://www.google.com/accounts/o8/id?id=AltOawk... 的目的是什么?对于我的 Google 帐户来说,这真的是独一无二的吗?所以那个 URL 就是我的身份?

  • 他们为什么不使用https://www.google.com/accounts/o8/id?u={google-username} 而不是这个神秘的...?id=AltOawk...

  • 如果是 Google,标识符 URL 是什么?

  • 什么是 OpenID 端点 URL? (什么是 IdP URL?)

我问的原因是因为我正在尝试实现自己的 OpenID 端点。

  • OpenID 端点 URL 是否与标识符 URL 相同?

在我的 OpenID 端点实现中,我确实遇到了这个问题,即不同用户之间不能有区别。消费者网站只是将该 OpenID 端点上的所有用户视为相同。当然,它始终是同一个 OpenID URL,但 Google 的 OpenID 也是如此。

  • 如果最终用户使用此“通用”URL,我如何在我的 OpenID 端点实现中将其重定向/转发到“具体”/唯一(标识符?)URL?或者如何让它区分同一 OpenID URL 上的不同最终用户?

在我当前的实现中,当我启用一些调试跟踪时,我得到的第一个请求是模式 checkid_setup。在规范中,它说我在这里获得了声明的标识符。由于我在消费者站点上输入的内容(我的调试跟踪也说相同),这就是“通用”URL(OpenID 端点 URL)。 IE。那是不是唯一的 URL。

  • 我现在必须进行重定向吗?规格没有说明任何内容。我在哪里告诉“具体”网址? (在我的例子中,就是 URL http://{endpoint-url}?u={endpoint-username}。)

还有术语“OpenID 服务器”(URL)和“OpenID 委托”(URL)。

  • 这些术语与上述其他术语有何关联?和 OpenID 端点 URL 一样吗?

  • 什么是“OpenID 身份”?和 OpenID 标识符 URL 一样吗?


另见相关问题:How does OpenID differ between different logins on the same OpenID endpoint?

(元问题:我是否应该将其拆分为许多独立的 SO 问题?恐怕否则我可能无法得到所有问题的答案。)

【问题讨论】:

    标签: openid google-openid


    【解决方案1】:

    好的,因为我刚刚修复了我的SMF OpenID endpoint implementation(阅读有关我遇到的一些非常相关的问题的详细信息here),我对这些关系做了一些假设。当然,这并不能证明他们是正确的(所以请纠正我)。他们在这里:

    • 标识符 URL = OpenID 端点 URL = IdP

    • OpenID 端点不是唯一的。该端点的所有最终用户都是一样的。

    • 已验证的标识符 URL = 身份

    • 经过验证的标识符 URL 是唯一的。它与端点用户帐户相关联。

    • https://www.google.com/accounts/o8/id 是 Google OpenID 端点 URL。

    • https://www.google.com/accounts/o8/id?id=AltOawk... 是经过 Google OpenID 验证的标识符网址。

    • Google OpenID 身份 URL 包含的哈希也与 OpenID 领域(此 OpenID 标识符保持有效的消费者域命名空间)相关。这就是不只是用户名的原因之一。

    • 关于如何提供唯一的验证标识符URL,请参见here

    我仍然不清楚:

    • Google 使用哈希 id 的其他原因还有哪些?它也可以使用id?u={username}&oidrealm={...}

    • 拥有这样的 OpenID 领域的根本原因是什么?

    • 标识符 URL 和声明的标识符 URL 之间究竟有什么区别?

    【讨论】:

    • 为什么不是id?u={username}&oidrealm={...} 而是一个“哈希”?一个原因可能是您的电子邮件地址可能来自您的用户名? (Gmail 用户名?)而且您可能不想将您的电子邮件泄露给依赖方。另一个原因可能是由于隐私问题,您甚至不想泄露您的用户名(即使它无法映射到您的电子邮件)。
    • Here I found an answer from Google(我认为):我们选择将标识符设置为特定于领域的标识符,以便为我们的用户提供一定程度的隐私保护。例如,您可以创建一个为 Google 帐户用户提供服务的网站,而无需了解他们在 Google 的身份
    【解决方案2】:

    这是我的理解。我实际上只是在您自己的答案中回答最后两个问题。希望有人觉得这些有用。

    拥有这样的 OpenID 领域的根本原因是什么?

    领域用于安全。基本上,return_url 会根据领域进行检查,并且 OpenID 规范说它们必须匹配。 Google 更进一步,并为每个领域提供了唯一经过验证的标识符。他们可能已经按照您的建议进行操作,并将领域放回其标识符中,但是您可以通过查看两个经过验证的标识符来判断它们是否是同一个最终用户。我认为他们正试图让他们的标识符不受识别信息的影响。 (讽刺,不是吗?)

    标识符 URL 和声明的标识符 URL 之间究竟有什么区别?

    声明的标识符是最终用户指定的标识符。这不是他们的唯一标识符。雅虎就是一个很好的例子。它们允许您指定yahoo.com 作为您的标识符,登录到您的雅虎帐户,并将唯一标识符返回给 openid 消费者。这只是简化了最终用户的流程。 (并且增加了他们使用 yahoo.com 作为他们的 openid 的可能性!)

    【讨论】:

      【解决方案3】:

      https://www.google.com/accounts/o8/id?id=AltOawk...的目的是什么?对于我的 Google 帐户来说,这真的是独一无二的吗?所以那个 URL 就是我的身份?

      如果我理解正确,答案是“是的!”

      他们为什么不使用https://www.google.com/accounts/o8/id?u={google-username} 而不是这个神秘的...?id=AltOawk...?

      我想他们希望将来更改您的帐户时安全,例如,如果您(现在或将来)能够更改您的用户名,那么您可能希望将其反映在您的 OpenId 声明中-identifier 也是如此 - 但那样你就有麻烦了!您对旧声明标识符的所有注册都将无法评估。在此处阅读更多信息:http://wiki.openid.net/w/page/12995200/OpenID-Security-Best-Practices 和此处:http://blog.nerdbank.net/2008/07/case-for-case-sensitive-openid-url.html

      【讨论】:

      • 关于“是的!”:实际上,它因领域而异。如果您使用 Gmail 登录 example.com 和 anotherdomain.com,您会得到不同的哈希值。为什么?我想这也是一个隐私问题(除了你提到的原因)。由于您在访问不同网站时不会获得相同的 id=...“hash”,因此您可以非常匿名。
      猜你喜欢
      • 2011-08-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-03-03
      • 2011-03-27
      • 2021-02-23
      • 1970-01-01
      • 2012-04-17
      相关资源
      最近更新 更多