代码之家  ›  专栏  ›  技术社区  ›  Albert

openid:标识符url是唯一的吗?标识符之间有什么区别

  •  15
  • Albert  · 技术社区  · 15 年前

    OpenID specs 它说:

    • 标识符:

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

    • 声明的标识符:

    一个最终用户说他们拥有的标识符,尽管消费者尚未验证该标识符。

    • 已验证标识符:

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

    • 身份提供程序:

    也称为“idp”或“server”。这是用户联系的OpenID身份验证服务器,用于加密证明最终用户拥有声明的标识符。 最终用户如何对其身份提供程序进行身份验证超出了OpenID验证的范围。

    • 标识符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... . 这个网址现在看起来很独特。

    • 现在的目的是什么 网址:https://www.google.com/accounts/o8/id ?这是OpenID端点URL吗?或者这是IDP URL(如果有什么不同)?

    • 目的是什么 https://www.google.com/accounts/o8/id?ID = ALTOWAK… ?这真的是独一无二的吗 我的 谷歌账户?所以那个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,但谷歌openid也是如此。

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

    在我当前的实现中,当我启用一些调试跟踪时,我得到的第一个请求是模式checkid_设置。在规范中,它说我在这里获取声明的标识符。由于我在使用者站点上输入的内容(我的调试跟踪也这么说),这就是“常规”URL(OpenID端点URL)。也就是说 唯一的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?

    (元问题:我应该把这个问题分成很多独立的问题吗?恐怕我的所有问题都得不到答案了。)

    3 回复  |  直到 14 年前
        1
  •  5
  •   Community Mohan Dere    8 年前

    好吧,因为我刚修好了我的 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验证的标识符URL。

    • google openid identity url包含的散列也与openid领域(此openid标识符保持有效的使用者域命名空间)相关。这是不只是用户名的原因之一。

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

    但有些事情我还是不清楚:

    • 谷歌使用散列ID还有什么其他原因;它也可以使用 id?u={username}&oidrealm={...} .

    • 为什么会有这样的OpenID领域呢?

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

        2
  •  2
  •   livingtech    15 年前

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

    为什么会有这样的OpenID领域呢?

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

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

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

        3
  •  2
  •   Joakim    14 年前

    目的是什么 https://www.google.com/accounts/o8/id?id=AltOawk ……?对于我的谷歌账户来说,这真的是独一无二的吗?所以那个URL就是识别我的东西?

    如果我对一切都理解正确,答案是“是的!”

    为什么没有用呢 https://www.google.com/accounts/o8/id?u= 谷歌用户名而不是这个神秘的…?ID = ALTOWAK…?

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