我有一个React Web App和一个API端点。现在我想验证(≠授权)基于他们的Steam帐户的用户,可能与OpenID我假设.
下面是一个小对话+drawing来总结我的想法:
MRWA:嘿,我是Joe,让我在你这边用我的Steam用户名和密码进行身份验证。(绿色侠)
Steam:啊,我知道了,你现在是Joe -调用重定向URL。(黄色箭头)
MRWA:我已经拿到了authentication-token + SteamID,会发给MA。(红箭)
MA:已获取您的认证令牌+ SteamID。我会检查您的令牌是否有效,因为您可以发送任何SteamID给我,对吗?...嘿Steam,这个令牌有效吗?如果有效,你能返回SteamID吗?(橙子箭头)
Steam:Token有效,这是你发给我的Token对应的SteamID。
MA:明白了,我现在给MRWA发送一个访问令牌,这样我就不用再问你了。
我该如何存档?
2条答案
按热度按时间fcipmucu1#
您可以使用Steamworks User Authentication and Ownership中概述的方法:
在游戏客户端和其他客户端(P2P)或游戏服务器之间使用会话票证
该文档更有可能为您的用例提供准确的答案,但我将描述一种选择。
如果你的React Web应用程序是Steam上的游戏/应用程序,那么你可以使用Steam API完全自动生成票证,这样用户就不需要进行任何额外的登录。您可能可以找到该API的JavaScript Package 器,但哪一个可能取决于运行您的应用程序的服务器(即nodejs)。
您可以使用Steamworks Web API在后端对用户进行身份验证:在Web应用程序中,您通过本机API调用ISteamUser.GetAuthTicketForWebApi并将该票证发送到服务器,并在服务器上使用ISteamUserAuth/AuthenticateUserTicket webapi端点。服务器上不需要特定于steam的库。
正如文档注解中提到的,webapi调用需要一个发布者API密钥,您可以使用管理员Steamworks帐户创建该密钥。千万不要在用户下载的可执行文件中包含您的API密钥,否则他们会造成严重破坏!
如果您的React Web App不是Steam上的游戏/应用程序,那么您可能需要使用OpenID。您必须向用户显示登录页面。
b09cbbtk2#
使用此库。https://github.com/SmItH197/SteamAuthentication
这将为你所需要的一切工作。
如果您进入它,您将看到它有一种方法可以验证用户,并检查他们是否使用
if(!isset($_SESSION['steamid']))
登录然后,您可以执行可能需要的任何任务,并验证它是否仍然是正确的用户。