NodeJS 通过Steam进行OpenID认证

vjrehmav  于 12个月前  发布在  Node.js
关注(0)|答案(2)|浏览(75)

我花了一天的大部分时间试图弄清楚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/供参考。

hsvhsicv

hsvhsicv1#

对于nodejs中的Steam身份验证,您可以使用Passport。
Passport是一个身份验证库,它最适合基于Web的应用程序。
有一个steam策略可以处理您的steam身份验证。
检查护照here
这就是Steam策略的仓库。有一个示例文件夹,您可以看到如何设置您的Steam身份验证。

9jyewag0

9jyewag02#

你可以使用我的软件包。我已经采用了openid并将其重写(或从头开始编写)为现代TS。不客气)
https://www.npmjs.com/package/steam-lightweight-openid

相关问题