我花了一天的大部分时间试图弄清楚 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/供参考。
您只需使用我的软件包即可。我采用了 openid 并将其重写(或从头开始编写)为现代 TS。不客气;)