我正在使用JanRain库,并实现与其服务器示例非常相似的代码(实质上是创建我自己的openid提供程序)。我有它工作,但当我尝试返回与指定给消费者的身份不同的身份时,我收到以下错误:
在这种情况下,唯一ID / URL为http://example.com/openid/33
,而为消费者指定的ID为http://example.com
。
我正在使用这样的东西:
$request = $server->decodeRequest();
$request->answer( true, null, $id_url, $request->identity );
我尝试切换$request->identity
和$id_url
。我只在上面显示的状态下得到错误,而另一个状态有效,但似乎没有向消费者返回正确的东西。我正在使用此处的OP简单注册测试:http://test-id.org/OP/Sreg.aspx,当我切换它时,它可以正常工作,但我无法在日志中的任何位置找到$id_url
。
我的猜测是,我需要在过程中告诉消费者一些关于ID与最终用户指定的ID不同的内容,但到目前为止我还没有找到正确的尝试。我知道这是可能的,因为雅虎的OpenID就是这样的。
欢迎任何想法或建议。谢谢!
答案 0 :(得分:2)
您将端点URL与声明的标识符或OP本地标识符混淆。
工作流程如下:
http://specs.openid.net/auth/2.0/identifier_select
所以如果你有http://specs.openid.net/auth/2.0/identifier_select
,你应该只提供一个新的标识符。