我花了大半天的时间试图弄清楚OpenID是如何工作的。我的目标是建立一个简单的网站,在这里,点击一个登录按钮,用户被带到一个蒸汽登录页面,在那里他们被提示输入用户名和密码。成功登录后,用户被重定向到我的域上的一个页面,我在那里收集查询字符串参数。它们看起来像这样:
{
"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/以供参考。
发布于 2018-12-01 23:17:11
对于nodejs中的Steam身份验证,可以使用Passport。
Passport是一个身份验证库,最适合基于Express的web应用程序。
有一个steam策略可以处理您的steam身份验证。
检查passport here
这是Steam strategy的存储库。这里有一个示例文件夹,您可以在其中查看如何设置Steam身份验证。
https://stackoverflow.com/questions/53572113
复制相似问题