【问题标题】:Is Google the only OpenID provider that requires "identifier_select"?Google 是唯一需要“identifier_select”的 OpenID 提供商吗?
【发布时间】:2010-06-10 15:17:53
【问题描述】:

我正在用 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 规范来确定?

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

【问题讨论】:

  • 当然不是一个愚蠢的问题(如果存在的话),您甚至提供了充足的信息、相关链接、精心设计的问题以及您自己实际寻找的注释!

标签: php openid lightopenid


【解决方案1】:

这里是 LightOpenID 作者。

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

请注意,此答案是关于我的库的最新版本,这是在提出此问题后推送的。还在为这个问题苦苦挣扎的人,请下载newest version

【讨论】:

  • Mewp,感谢您几天前推送的库更新。现在“identifier_select”的使用是自动的(即内置到发现过程中),这意味着 LightOpenID 的使用将对所有提供者以相同的方式起作用。再次感谢,继续努力。我喜欢你的库,这样干净(读作“可读”)的代码很少见。
  • 我刚刚陷入了 OpenID 的诱惑,我只想说我非常喜欢你的课。我对 OpenID 概念仍然很陌生,我花了整夜阅读它,但我仍然不能完全理解 AX 和 SREG - 但明天又是新的一天!另外,如果我尝试分叉您的代码并将其作为我的 OSS 项目 (sf.net/projects/phunction) 的一部分发布,您是否介意?
  • @Alix Axel:由于您的项目是 MIT 许可的,您肯定知道许可允许它。换句话说:你当然可以,只要你不声称是你写的。此外,您不必深入了解 SREG/AX 的工作原理。它只是获取有关用户的其他信息的一种方法,您可以将其标记为可选或必需。您唯一需要知道的是 AX 字段名称,可以在 axschema.org/types 找到。如果您还有其他问题,请给我留言。
【解决方案2】:

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

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

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

【讨论】:

  • 看来我只需要扩展库 (LightOpenID)。两个流行的 PHP OpenID 库(Zend 组件和 JanRain 的 PHP-OpenID)提供了比我需要的更多的灵活性,并且没有 LightOpenID 那样好的界面。祝我好运!
  • 我认为大多数人都支持定向身份,包括 myopenid 和 yahoo。
  • Artefacto,我认为您将定向身份与 identifier_select 混淆了,它们是不同的东西。 Identifier_select 是 OP Identifier 发起的 OpenID 体验,用户不必知道自己的标识符。 “定向身份”是 OP 为用户登录的每个 RP 提供成对唯一标识符的地方。例如,Yahoo 支持 identifier_select,但 定向身份。
【解决方案3】:

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

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

【讨论】:

  • 有没有办法在重定向用户之前检测到提供者需要定向身份?我可以对 Yahoo 和 Google 的支持进行硬编码,但我仍然寄希望于寻找更灵活的解决方案。我可能在 OpenID 规范中遗漏了一些东西,这是显而易见的。
  • 与 OpenID 1.0 不同,您必须为 OpenID 2.0 提供者做一些配置工作。例如,您需要在您的网站上贴上 NASCAR 徽标,因为您不能指望用户知道 OpenID 2.0 URL 是什么。您可以为此在站点配置中添加一个标志。
猜你喜欢
  • 2010-11-28
  • 1970-01-01
  • 1970-01-01
  • 2010-10-21
  • 1970-01-01
  • 2016-02-01
  • 2012-05-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多