1

我正在尝试在 PHP 中实现一个支持标识符选择的 OpenID 服务器(有人称之为定向身份,这实际上是标识符选择的更具体情况)。也就是说,用户可以输入一个通用 URI 作为他们的 OpenID 标识符,登录并选择返回给 OpenID 消费者的标识符。

例如,如果用户输入mysite.com作为其标识符,则在他们登录后,系统会提示他们将两个标识符之一返回给 OpenID 使用者(可能是mysite.com/myusernamemysite.com/anon-ad83f38c98b98)。

该系统的优点是您可以选择在多个站点中使用单个标识符,或者为单个站点使用唯一标识符。

无论如何——我还没有找到关于如何在 PHP 中实现这部分 OpenID 规范的好教程。事实上,大多数搜索都让我在论坛甚至堆栈溢出上找到未回答的问题。有谁知道可以处理标识符选择或定向身份的 PHP 库?如果是这样,是否有任何教程解释如何设置它?我一直在玩一些没有以任何方式提及它的库,但我还不能让它工作。

任何帮助是极大的赞赏。

4

2 回答 2

1

文档没用。你看过 Janrain 图书馆吗?他们有一个我已经成功实现的消费者以及我认为可以实现的服务器代码。看看 Yadis\XRIRes 和 Yadis\XRI 文件,你可能需要对他们的代码进行逆向工程——这就是我必须做的来弄清楚消费者。我目前正在研究实现服务器,但还没有找到任何有价值的东西。

http://openidenabled.com/files/php-openid/docs/2.1.3/OpenID/Auth_Yadis_Yadis.html

于 2010-01-19T15:29:34.893 回答
0

php-openid v2 肯定是有能力的。实际上,当您添加标识符选择时,您与库交互的方式几乎没有变化。当你得到你的Auth_OpenID_ChecKIDRequest时,你可以检查它的idSelect方法,看看它是否是标识符选择的情况。然后将选定的身份传递给Auth_OpenID_ChecKIDRequest.answer().

唯一的另一点是确保您在mysite.com/上宣传规范所称的“OP 标识符元素” 。如果您已经在为您的用户标识符提供 XRDS 页面,则其工作方式相同,只是使用不同的类型 URL。如果您不是(您只有基于 HTML 的link元素发现),您可能需要查看 myopenid 的 HTTP 标头作为示例。

于 2010-01-22T08:28:34.303 回答