Php 开放Id XRDS发现
我正在使用openid,只是在我的站点(用PHP)上创建一个类来交互/验证openid。我知道还有其他一些库(比如RPX),但我想使用我自己的库(这有助于更好地理解协议,以及它是否适合我) 我的问题与开放Id发现序列有关。基本上,我已经到了使用XRDS文档从声明的标识(openid.claided_id)中获取本地标识(openid.identity)的地步 我的问题是,我是否必须发出一个cURL请求来获取XRDS位置(X-XRDS-Location),然后再发出一个cURL请求来获取实际的XRDS文档Php 开放Id XRDS发现,php,openid,openid2,Php,Openid,Openid2,我正在使用openid,只是在我的站点(用PHP)上创建一个类来交互/验证openid。我知道还有其他一些库(比如RPX),但我想使用我自己的库(这有助于更好地理解协议,以及它是否适合我) 我的问题与开放Id发现序列有关。基本上,我已经到了使用XRDS文档从声明的标识(openid.claided_id)中获取本地标识(openid.identity)的地步 我的问题是,我是否必须发出一个cURL请求来获取XRDS位置(X-XRDS-Location),然后再发出一个cURL请求来获取实际的XR
对于一个愚蠢的请求,我似乎只发出一个cURL请求并获得openid服务器,但必须发出两个请求才能使用XRDS智能方法。这似乎不对,其他人能给我一些信息吗。我能给你的最好建议是,试着对HTTP请求进行一点抽象,然后只需完成两次HTTP请求的整个过程 如果您想使用持久性连接加快速度,可以保留curl实例,但这可能是您想要的,也可能不是您想要的 我希望这有帮助,祝你好运。。OpenID是自WebDAV=)以来我遇到的最庞大、最复杂的web标准之一
Evert要完成,是的,您的RP必须HTTP获取用户提供给您的URL,然后搜索XRDS文档引用,如果找到,则从那里再进行一次HTTP获取。请记住,XRD可能托管在不同的服务器上,因此不要编写任何要求两个请求之间的连接相同的代码,因为它可能不是相同的连接 如果在初始HTTP GET请求中包含HTTP标头:
Accept: application/xrds+xml
然后,页面可能会立即响应XRDS文档,而不是需要解析XRDS链接的HTML文档。您可以通过检查内容类型标头中application/xrds+xml的HTTP响应标头来检测是否发生了这种情况。这是一种优化,因此RPs通常不必进行第二次HTTP GET调用,但您不能指望它会发生 我知道我在这里比赛迟到了,但我想你也应该去看看。它采用标准的“email as userid”模式,允许您从那里进行查找以发现openid等