首页 > 解决方案 > 通过 Steam 进行 OpenID 身份验证

问题描述

我花了一天的大部分时间试图弄清楚 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.jssecurityauthenticationopenidsteam

解决方案


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

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

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

在这里检查护照

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


推荐阅读