声明的OpenID

2024-06-06 13:54:52 发布

您现在位置:Python中文网/ 问答频道 /正文

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

当使用node openid时,我希望这两个URL生成相同的声明的\u id:

但是,这些URL会产生两个不同的声明的\u id:

两者都是提到的网址。为了验证这种行为,我决定检查另一个OpenID库Python OpenID。使用相同的两个URL,我仍然可以得到两个声明的\u id,但是在本例中它们是不同的,现在我得到:

  • http://{username}。myopenid.com/在
  • http://{username}。myopenid.com/xrds在

所以,我想我的问题是,我假设声明的\u id应该用作标识符,并且上面的url应该生成相同的声明的\u id,这是对的吗?在


Tags: com身份验证idhttp声明url网站www
1条回答
网友
1楼 · 发布于 2024-06-06 13:54:52

他们没有理由得到相同的id,事实上你没有提供任何支持这个期望。在

但是,需要注意的是,第一个库对声明的id使用了错误的值(emphasis mine):

7.2. Normalization

The end user's input MUST be normalized into an Identifier, as follows :

(...)

 4. URL Identifiers MUST then be further normalized by (...) following redirects when retrieving their content (...).

对于第二个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。在

相关问题 更多 >