15

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)。即,这不是唯一的 URL。

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

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

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

  • 什么是“OpenID 身份”?与 OpenID 标识符 URL 相同吗?


另请参阅相关问题:OpenID 如何在同一 OpenID 端点上的不同登录之间有所不同?

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

4

3 回答 3

5

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

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

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

我仍然不清楚一些事情:

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

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

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

于 2010-07-16T00:36:55.333 回答
2

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

如果我正确理解了所有内容,答案是“是的!”

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

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

于 2011-05-18T21:43:45.057 回答
2

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

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

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

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

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

于 2010-08-31T21:21:00.690 回答