OpenID简单注册(sreg)与属性交换(ax)

时间:2010-03-11 03:57:17

标签: openid sreg

OpenID sreg与ax扩展之间有什么关系?依赖方如何知道请求哪一个,或两者都知道?

1 个答案:

答案 0 :(得分:17)

sreg被写成可能有效的最简单的东西,并且可用的字段非常有限。但由于这包括nicknameemailfullname,这通常都是您需要的。

属性交换具有更大的可扩展性和功能,但我怀疑在实践中,update_url和商店请求等功能尚未广泛实施。

至于知道请求的内容:理论上,在发现阶段可用的XRDS文档中记录了提供者支持的扩展,如规范的Extensions部分所述。如果您正在使用python-openid(或者可能是 OpenID Enabled 中的其他库之一),您可以通过类似

的内容查询
auth_req = consumer.begin('http://example.com/joe')

from openid.extensions import sreg

if sreg.supportsSreg(auth_req.endpoint):
    sreg_request = sreg.SRegRequest(required=['nickname','email'])
    auth_req.addExtension(sreg_request)
else:
    # maybe AX, maybe something else...

不幸的是,OpenID标识符委派使得它非常不可靠。用户可能正在使用基于HTML的发现方法,该方法根本不公布扩展,可能具有不包含与提供者相同的扩展信息的XRDS,或者曾经准确但现在已经出现的XRDS约会。

此外,即使您确实获得了宣传AX扩展的XRDS,据我所知,它并没有告诉您提供商支持哪些属性(即哪个AX架构)。

最实用的方法可能是要求很多东西,如果你收回一些东西,就可以使用它。

相关问题