我正在尝试在PHP中实现支持标识符选择的OpenID服务器(有些称为此定向标识,这实际上是标识符选择的更具体情况)。也就是说,用户可以输入通用URI作为其OpenID标识符,登录,并选择要返回给OpenID使用者的标识符。
例如,如果用户输入 mysite.com 作为其标识符,则在他们登录后,系统会提示他们将两个标识符中的一个返回给OpenID消费者(可能 mysite.com / myusername 或 mysite.com/anon-ad83f38c98b98 )。
此系统的优点是您可以选择在多个站点中使用单个标识符,也可以为各个站点使用唯一标识符。
无论如何 - 我还没有找到一个关于如何在PHP中实现OpenID规范的这一部分的好教程。实际上,大多数搜索都让我在论坛甚至堆栈溢出时都没有回答问题。有谁知道可以处理标识符选择或定向身份的PHP库?如果是这样,那里有没有解释如何设置它的教程?我一直在玩几个没有提到它的库,但是我还没能让它工作。
非常感谢任何帮助。
答案 0 :(得分:1)
文档没用。你看过Janrain图书馆了吗?他们有一个我已成功实现的消费者,以及我认为可实现的服务器代码。看看Yadis \ XRIRes和Yadis \ XRI文件,您可能需要对其代码进行反向工程 - 这就是我必须要做的才能找出消费者。我目前正在考虑实现一个服务器,但找不到任何有价值的东西。
http://openidenabled.com/files/php-openid/docs/2.1.3/OpenID/Auth_Yadis_Yadis.html
答案 1 :(得分:0)
php-openid v2当然有能力。实际上,当您添加标识符选择时,您与库的交互方式变化相当小。获得Auth_OpenID_ChecKIDRequest
后,您可以检查其idSelect
方法,看看是否属于标识符选择的情况。然后将所选身份传递给Auth_OpenID_ChecKIDRequest.answer()
。
唯一的另一点是确保在 mysite.com / 上宣传规范术语“OP标识符元素”。如果您已经为您的用户标识符提供XRDS页面,则其工作方式相同,只是使用不同的类型URL。如果您不是(您只使用带有link
元素的基于HTML的发现),您可能需要查看myopenid的HTTP标头以获取示例。