OpenID声明的标识符

时间:2011-09-21 00:11:21

标签: python node.js openid

使用OpenID进行身份验证时,我认为应该使用claimed identifier作为唯一标识特定用户的密钥。我遇到的问题是两个独立的错误或对规范的误解:)。

使用node openid时,我希望这两个网址会产生相同的claim_id:

但是,这些网址会产生两种不同的claim_id:

两者都是提到的网址。为了验证这种行为,我决定查看另一个OpenID库Python OpenID。使用相同的两个URL我仍然得到两个claim_ids,但在这种情况下它们是不同的,现在我得到:

  • 的http:// {用户名} .myopenid.com /
  • 的http:// {用户名} .myopenid.com / XRDS

所以,我想我的问题是,我是否正确地假设claim_ids 用作标识符,并且上述网址应该产生相同的claim_id?< / p>

1 个答案:

答案 0 :(得分:1)

没有理由他们应该产生相同的声称ID,事实上你没有提供任何支持这种期望的东西。

但是,应该注意的是,第一个库对声称的id使用了错误的值(强调我的):

  

7.2。归一化

     

最终用户的输入必须标准化为标识符,如下所示:

     

(...)

     

4.在检索其内容(...)时,URL标识符必须通过(...)跟随重定向进一步标准化。

对于第二个网址,您有此响应(删除了一些标头):

> GET /xrds?username=cataphract.myopenid.com HTTP/1.1
> Host: www.myopenid.com
> Accept: application/xrds+xml
>
< HTTP/1.1 301 Moved Permanently
< Location: http://cataphract.myopenid.com/xrds

因此应使用http://{username}.myopenid.com/xrds