13

我正在用 PHP 开发一个 OpenID 消费者,并且正在使用出色的 LightOpenID 库 ( http://gitorious.org/lightopenid )。基于示例客户端脚本中的代码,我已成功创建了一个使用者。但是,我遇到了一个障碍:Google 要求将openid.identityandopenid.claimed_id设置为"http://specs.openid.net/auth/2.0/identifier_select"(请参阅此处)。如果我这样做,它会起作用,但其他提供商(即 AOL)不会。

以下是我的问题:

  1. Google 是不是一个极端案例——它是唯一identifier_select需要的 OpenID 提供商,与 OpenID 规范相反吗?
  2. LightOpenID 库有缺点吗?
  3. 我对 OpenID 如何工作的理解不正确吗?
  4. 如果谷歌不是唯一需要identifier_select的供应商,那么我将硬编码其中的数量有限,还是有办法通过 OpenID 规范来确定这一点?

我是 OpenID 内部的新手,所以如果这是一个愚蠢的问题,我不会感到惊讶。在互联网上搜索后,我无法找到有关此主题的任何信息。

4

3 回答 3

7

LightOpenID 作者在这里。

  1. 规范允许它,所以它可能不是唯一的(其他答案提到雅虎)
  2. 不,没有——LightOpenID 支持这一点。(参见库中的example-google.php)。
  3. 您仍然需要知道发现 url,因此您需要知道提供者。或者告诉用户输入https://www.google.com/accounts/o8/id作为他们的身份。

请注意,这个答案是关于我的图书馆的最新版本,这是在提出这个问题后推送的。对于仍在为这个问题苦苦挣扎的人,请下载最新版本

于 2010-06-15T19:25:14.250 回答
6

谷歌并没有与规范相矛盾。OpenID 2.0 规范绝对允许 identifier_select 流,它启用了一种称为“定向身份”的东西,谷歌是唯一一个真正行使这种能力的值得注意的 OP(据我所知)。

是的,一个完全且正确实现的 OpenID RP 库会自动注意到 Google(以及任何其他类似的 OP)需要 identifier_select,因为它是识别这一点的标识符发现步骤的一部分。对您正在使用的库感到抱歉,但由于可能是 OpenID 的不完整实现,这听起来让您感到悲伤。

顺便说一句,AOL确实支持 identifier_select。

于 2010-06-11T03:50:47.830 回答
0

这用于在 OP 驱动 ID 选择模式下进行身份验证。它不太常见,但不是极端情况。在我使用的所有 OP 提供商中,我注意到 Google 和 Yahoo 需要这个。

这是在 OpenID 2.0 中支持 Directed Identity 所必需的。基本上,您会为不同的网站获得不同的 OpenID。隐私倡导者正在推动转向这种模式,所以我认为你迟早必须支持这种模式。

于 2010-06-10T19:31:26.367 回答