2012-04-16 26 views
2

我正在实现一个OpenID提供程序,并使其在标准OpenID请求(最终用户知道他们的OpenID网址)中平稳运行。然而,我希望消费者能够在不知道最终用户OpenID网址的情况下使用提供商,这将在用户登录时确定。使用OpenID而不要求用户知道他们的OpenID网址?

我发现这在理论上可能是通过阅读this stackoverflow question,但它并没有提供很多细节让我能够收集所需的信息来开发这个自己,事实上它的DotNet并没有帮助。

任何人都可以指引我到哪里可以找到关于如何设置的更多信息?

我正在使用Zend Framework,但在其文档中找不到任何有用的信息。

回答

1

消费者可以指定提供者“应该选择属于最终用户的标识符”。在这种情况下,提供者将选择属于该用户的标识符(即最有可能登录到提供者上的用户),并且消费者不必提供openid url。请参阅部分9.1。请求参数,项目openid.identityOpenId specification page。基本上,参数openid.identity设置为http://specs.openid.net/auth/2.0/identifier_select

关于你的问题如何进行此设置: 欲了解更多信息,请阅读specification of OpenId 2.0 另外,它可能是在Google's OpenId developer page读有用的。

1

OpenID 的URL,所以我不知道如何在不知道用户名的情况下登录而不知道用户名。如果你的目标只是为了帮助用户,或许你可以提供某种下拉列表,列出常用提供者,请求相关部分,并允许用户填写它们?

由于OpenID是分散式的,并且任何网站都可以成为OpenID,所以无法预测可以使用的所有网址,但是您当然可以覆盖那些受欢迎的网址。 In fact, this SO post covers them.

“其他”选项可以允许直接输入URL来处理所有其他情况。

我想说,再加上Zend_OpenId_Consumer/Zend_Auth integration doc会是一个很好的开始。

+0

如果你检查我的帖子中的链接,你可以看到它实际上是可能的。我也没有看到用户需要知道他/她的openid url的原因,与消费者的应用程序可以简单地链接到OpenID端点,然后以交互方式验证用户并将其OpenID返回给用户。 – Naatan 2012-04-16 17:07:59

+0

好的,看起来你的术语有点乱码。 OpenID是一个过程,一个标准,而不是一个价值。实际上,OpenID身份验证过程的返回值是您调用OpenID的。该URL是您发送用户进行身份验证的位置。您必须要求他们提供该URL或使用某种提供者列表(因此限制他们可以使用哪些服务进行身份验证) – Kato 2012-04-17 15:45:31

+0

因此,用户不必提供URL,但必须提供一个提供者,并且有人必须知道要联系该提供者的URL('define(“TEST_SERVER”,Zend_OpenId :: absoluteURL(“example-8.php”));'可以预测通用提供者,如果你打算只提供有限的选择。例如,如果我使用我的WordPress博客,但作为提供者,您将不得不以某种方式询问或生成提供者URL。 – Kato 2012-04-17 15:52:17