python - OpenID 声明的标识符

标签 python node.js openid

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

使用 node openid 时我希望这两个 URL 产生相同的 claimed_id:

但是,这些 URL 会产生两个不同的 claimed_ids:

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

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

因此,我想我的问题是,我假设 claimed_ids 应该 用作标识符并且上述 URL 应该 产生相同的 claimed_id 是否正确?

最佳答案

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

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

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,您有此响应(删除了一些 header ):

> 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

关于python - OpenID 声明的标识符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7493245/

相关文章:

javascript - 在 Node js 中定义动态变量时未定义错误窗口

android - 如何使 native 客户端应用程序可供多个租户使用?

python - 扭曲的网络 - 在请求中重定向

python - 如何根据不同的索引阈值过滤数据帧

node.js - Google App Engine ManagedSSL 不工作

php - 如何使用 LightOpenID 从提供商那里获取帐户数据?

php - 有没有更好的方法从提供者那里获取 OpenID 信息?

python - 通过 awk 从带有子进程的 python 脚本中实现填充和舍入值

python - 阅读文档 Sphinx 版本中不包含文档字符串

mysql - 将输入与 mysql 数据库进行比较