2010-06-10 46 views
13

我正在开发PHP中的OpenID使用者,并使用了梦幻般的LightOpenID库(http://gitorious.org/lightopenid)。根据示例客户端脚本中找到的代码,我成功创建了一个使用者。但是,我遇到了一个问题:Google要求将openid.identityopenid.claimed_id设置为"http://specs.openid.net/auth/2.0/identifier_select"(请参阅here)。如果我这样做,但其他提供者(即美国在线)不这样做。Google是唯一需要“identifier_select”的OpenID提供者吗?

这里是我的问题:

  1. 是谷歌一个角落的情况下 - 它是在需要identifier_select唯一OpenID提供商,违背了OpenID的规格?
  2. LightOpenID库存在缺点吗?
  3. 我了解OpenID的工作原理吗?
  4. 如果Google不是唯一需要identifier_select的供应商,那么我们只需要硬编码的数量有限,还是可以通过OpenID规范来确定?

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

+1

当然不是一个愚蠢的问题(如果他们存在),你甚至提供了充足的信息,相关的链接,良好的问题和一个笔记,你实际上自己寻找这个! – 2010-06-10 23:16:53

回答

6

谷歌不违反规范。 OpenID 2.0规范绝对允许使用identifier_select流,它可以启用一种称为“定向身份”的功能,Google是唯一着名的OP(据我所知)实际上可以执行此功能。

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

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

+1

看起来我只需要扩展库(LightOpenID)。两种流行的PHP OpenID库(Zend组件和JanRain的PHP-OpenID)提供了比我需要的更多的灵活性,并且没有LightOpenID那么好的界面。祝我好运! – Skrat 2010-06-11 13:53:45

+0

我认为大多数人都支持定向身份,包括myopenid和yahoo。 – Artefacto 2010-06-13 13:06:02

+0

Artefacto,我认为你会将定向身份与identifier_select混淆,这是不同的事情。 Identifier_select是OP标识符发起的OpenID体验,用户不必知道他自己的标识符。 “定向身份”是OP为用户登录的每个RP提供成对唯一标识符的地方。雅虎例如支持identifier_select,但是* not *定向标识。 – 2010-06-13 14:49:59

0

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

这是在OpenID 2.0中支持定向标识所必需的。基本上,你为不同的网站获得了不同的OpenID。隐私权倡导者推动这一模式的发展,所以我认为你不得不在不久的将来支持这种模式。

+0

在重定向用户之前,有什么方法可以检测到提​​供者需要定向标识吗? 我可以硬编码支持雅虎和谷歌,但我仍然希望寻找更灵活的解决方案。 OpenID规范中可能有些东西是我错过了,明显的东西。 – Skrat 2010-06-10 21:57:10

+0

与OpenID 1.0不同,您必须为OpenID 2.0提供程序进行一些配置工作。例如,您需要用NASCAR徽标来粘贴您的网站,因为您无法期望用户知道OpenID 2.0 URL是什么。你可以为你的网站配置添加一个标志。 – 2010-06-10 23:15:48

7

LightOpenID作者在这里。

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

请注意,这个答案是关于我的图书馆的最新版本,它是在问这个问题后被推送的。对于任何人仍然在努力解决这个问题,请下载newest version

+0

Mewp,感谢您几天前推出的图书馆更新。现在,“identifier_select”的使用是自动的(即构建在发现过程中),这意味着LightOpenID的使用对于所有提供者将以相同的方式运行。 再次感谢您,继续努力!我爱你的图书馆,这样干净(阅读'可读')的代码很少见。 – Skrat 2010-06-22 18:34:10

+0

我刚刚陷入了OpenID的诱惑,我只想说我绝对喜欢你的课程。对于我整晚都在阅读的OpenID概念,我仍然非常青睐,但我仍然不太了解AX和SREG--但明天又是新的一天!另外,如果我尝试分叉代码并将其作为我的OSS项目(http://sf.net/projects/phunction/)的一部分发布,您是否也会介意,也是MIT许可的? – 2010-07-14 07:08:19

+0

@Alix Axel:由于您的项目是麻省理工学院许可的,您一定知道该许可证允许。换句话说:当然你可以,只要你不要求你写了它。此外,您不必深入了解SREG/AX如何工作。这只是一种获取关于用户的附加信息的方法,您可以将其标记为情绪或需要。唯一需要了解的是AX字段名称,可在http://www.axschema.org/types/上找到。如果您还有其他问题,请给我发消息。 – Mewp 2010-07-15 22:11:28

相关问题