【发布时间】:2019-05-03 11:16:24
【问题描述】:
我花了一天的大部分时间试图弄清楚 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,这一点非常重要以这种方式访问他们的帐户。
我很确定 these 是相关的文档,但我仍然不清楚。我应该如何使用这些数据对用户进行身份验证?
我在这篇文章中省略了一些我担心可能不好分享的价值观。这些占位符已用括号[] 进行了概述。另外,assoc_handle 真的是1234567890,这让我很反感,因为根据 OpenID 文档,它用于确定签名。
需要说明的是:这个收集凭据的页面不是我运行的,而是 Steam 的官方 OpenID 登录页面。 Steam是一个游戏平台。 https://steamcommunity.com/dev/供参考。
【问题讨论】:
标签: node.js security authentication openid steam