通过Steam进行OpenID身份验证

问题描述 投票:0回答:2

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

node.js security authentication openid steam
2个回答
2
投票

对于 Nodejs 中的 Steam 身份验证,您可以使用 Passport。

Passport 是一个身份验证库,最适合基于 Express 的 Web 应用程序。

有一个 Steam 策略可以处理您的 Steam 身份验证。

检查护照这里

这是Steam 策略的存储库。有一个示例文件夹,您可以了解如何设置 Steam 身份验证。


0
投票

您只需使用我的软件包即可。我采用了 openid 并将其重写(或从头开始编写)为现代 TS。不客气;)

https://www.npmjs.com/package/lightweight-openid

© www.soinside.com 2019 - 2024. All rights reserved.