Google是唯一需要“identifier_select”的OpenID提供商吗?

时间:2010-06-10 15:17:53

标签: php openid lightopenid

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

以下是我的问题:

  1. Google是否是一个极端案例 - 它是否是唯一需要identifier_select的OpenID提供商,与OpenID规范相反?
  2. LightOpenID库中是否有缺点?
  3. 我对OpenID的工作方式的理解不正确吗?
  4. 如果Google不是唯一需要identifier_select的提供商,那么我只需要硬编码,或者通过OpenID规范确定这一点吗?
  5. 我是OpenID内部的新手,所以如果这是一个愚蠢的问题,我不会感到惊讶。在搜索互联网之后,我无法找到关于这个主题的任何信息。

3 个答案:

答案 0 :(得分:7)

LightOpenID作者在这里。

  1. 规范允许它,所以它可能不是唯一的(其他答案提到雅虎)
  2. 不,没有 - LightOpenID支持这个。 (参见图书馆中的example-google.php)。
  3. 您仍然需要知道发现网址,因此您需要了解提供商。或者告诉用户输入https://www.google.com/accounts/o8/id作为他们的身份。
  4. 请注意,这个答案是关于我的库的最新版本,在问到这个问题之后推出了这个版本。对于仍在努力解决此问题的任何人,请下载newest version

答案 1 :(得分:6)

谷歌与规范并不矛盾。 OpenID 2.0规范绝对允许使用identifier_select流,这些流可以实现一种称为“定向身份”的东西,谷歌是唯一值得注意的OP(我知道),它实际上可以运行。

是的,一个完全正确实现的OpenID RP库会自动注意到Google(以及任何其他类似的OP)需要identifier_select,因为它是标识符发现步骤的一部分。对于你正在使用的库感到抱歉,但听起来好像是因为OpenID的实现不完整而引起你的悲痛。

顺便说一句,AOL 支持identifier_select。

答案 2 :(得分:0)

这用于在OP驱动ID选择模式下进行身份验证。它不太常见,但不是一个角落案例。在我使用的所有OP提供商中,我注意到谷歌和雅虎需要这个。

这是支持OpenID 2.0中的定向身份所必需的。基本上,您可以为不同的网站获得不同的OpenID。隐私权倡导者正在努力转向这种模式,所以我认为你必须尽快支持这种模式。