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

Alb*_*ert 15 openid google-openid

OpenID规范中,它说:

  • 标识符:

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

  • 声称的标识符:

尽管消费者尚未验证最终用户所拥有的标识符.

  • 已验证的标识符:

最终用户向其所拥有的消费者证明的标识符.

  • 身份提供者:

也称为"IdP"或"服务器".这是消费者联系的OpenID身份验证服务器,用于最终用户拥有声明的标识符的加密证明.最终用户如何向其身份提供商进行身份验证超出了OpenID Authenticait的范围.

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

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

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

在其他地方,我读过"OpenID端点URL"这个术语.

  • OpenID端点URL是否与IdP相同?那么IdP也是一个URL?

我们以Googles OpenID为例.当某个站点要求我进行OpenID登录时,我使用OpenID URL https://www.google.com/accounts/o8/id.那是标识符URL吗?如果是这样,那显然不是唯一的.通常,当我在该网站上的帐户设置中查看我的OpenID登录信息时,它不会显示输入的网址,但它已经以某种方式扩展了它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,标识符的网址是多少?

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

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

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

在我的OpenID端点实现中,我确实存在这个问题,它在不同用户之间无法区分.消费者网站只是将该OpenID端点上的所有用户都视为相同.当然,它始终是相同的OpenID URL,但Googles 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问题中将其分开?我担心否则我可能无法得到所有问题的答案.)

Alb*_*ert 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经过验证的标识符网址.

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

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

还有一些事情我不清楚:

  • 谷歌用于散列id的其他原因是什么?它也可以使用id?u={username}&oidrealm={...}.

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

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