node.js - 通过 Steam 进行 OpenID 身份验证
问题描述
我花了一天的大部分时间试图弄清楚 OpenID 是如何工作的。我的目标是建立一个简单的网站,点击登录按钮后,用户会被带到 Steam 登录页面,并提示他们输入用户名和密码。成功登录后,用户被重定向到我的域上的一个页面,我在其中收集查询字符串参数。它们看起来像这样:
{
"openid.ns": "http://specs.openid.net/auth/2.0",
"openid.mode": "id_res",
"openid.op_endpoint": "https://steamcommunity.com/openid/login",
"openid.claimed_id": "https://steamcommunity.com/openid/id/7656119[0000000000]",
"openid.identity": "https://steamcommunity.com/openid/id/7656119[0000000000]",
"openid.return_to": "http://127.0.0.1:8000/resolve",
"openid.response_nonce": "2018-12-01T14:49:46Z30hhn2/[someTEXTendingIN=]",
"openid.assoc_handle": "1234567890",
"openid.signed": "signed,op_endpoint,claimed_id,identity,return_to,response_nonce,assoc_handle",
"openid.sig": "[someTEXTandNUMBERSendingIN=]"
}
我无法解决的是实际的身份验证问题。我不确定如何处理这些数据。我想拥有自己的数据库,在其中存储有关用户的更多信息,例如朋友、消息、货币等。为此,我可以验证是否有人不只是获取此请求正文,更改他们的 ID,这一点非常重要以这种方式访问他们的帐户。
我很确定这些是相关的文档,但我仍然不清楚。我应该如何使用这些数据对用户进行身份验证?
我在这篇文章中省略了一些我担心可能不好分享的价值观。这些占位符已用括号括起来[]
。另外,这assoc_handle
真的是1234567890
,哪一种让我失望,因为根据 OpenID 文档,它用于确定签名。
需要说明的是:这个收集凭据的页面不是我运行的,而是 Steam 的官方 OpenID 登录页面。Steam是一个游戏平台。https://steamcommunity.com/dev/供参考。
解决方案
推荐阅读
- python - 使用 deepdish 附加到 h5 文件
- python - SQLParse - 通配符 LIKE 条件问题
- r - 删除少于“x”行的列表元素
- r - 缺少参数,没有默认值
- html - 将谷歌幻灯片转换为 html 不起作用
- php - 如何在将数据发送到 django API 视图时验证 wordpress wp_remote_post()
- angular - 如何获取 HTML 元素的 DropListRef?
- javascript - 如何重置下拉列表的值,单击 Vuejs 中的标签?
- mongodb - 如何从嵌套数组中获取不同的值?
- typescript - TypeScript 中重载函数的类型约束