使用Steam OpenId登录(oidc-client-js)

时间:2018-02-14 20:20:49

标签: steam-web-api oidc-client-js

我在客户端验证时使用google进行验证,接收token_id,将其发送到服务器,服务器检索该token_id的客户帐户信息库。这很简单,因为它是documented。现在我尝试使用Steam,但实际上我在steam docs中有关于OpenID的4行。我开始使用openID浏览器库oidc-client-js,但是蒸汽文档并没有帮助我。 openID lib需要以下字段:

  • 权威
  • 的client_id
  • REDIRECT_URI
  • RESPONSE_TYPE
  • 范围

Steam文档只提供提供商,密钥和域名,我真的不知道从哪里开始。

  

只需为您的语言和平台下载OpenID库   选择并使用http://steamcommunity.com/openid作为提供者。该   返回的声明ID将包含用户的64位SteamID。该   声称的ID格式为:http://steamcommunity.com/openid/id/

我收到CORS Header问题,因为我使用localhost而不是安全连接,我想我需要在oidc-client-js中配置其他字段:

  • 元数据
  • signingKeys

任何帮助都将赞赏

2 个答案:

答案 0 :(得分:5)

tl; dr:Steam不是OpenID Connect 提供商

我遇到了同样的问题。

我尝试在禁用CORS的情况下运行chrome以查看它是否可行,我从oidc-client收到错误:

SyntaxError: Unexpected token < in JSON at position 0  
    at JSON.parse (<anonymous>)  
    at XMLHttpRequest.s.onload (oidc-client.min.js?3809:1)

这很容易理解,因为https://steamcommunity.com/openid/.well-known/openid-configuration看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<xrds:XRDS xmlns:xrds="xri://$xrds" xmlns="xri://$xrd*($v*2.0)">
<XRD>
    <Service priority="0">
        <Type>http://specs.openid.net/auth/2.0/server</Type>        
        <URI>https://steamcommunity.com/openid/login</URI>
    </Service>
</XRD>
</xrds:XRDS>

这显然不是JSON。

Type balise中的网址重定向到http://openid.net/specs/openid-authentication-2_0.html,可以在OpenID specifications page的过时部分找到。

此外,您可以在OpenID Connect Discovery specification page中找到

  

支持Discovery的OpenID提供程序必须在通过将字符串/.well-known/openid-configuration连接到Issuer所形成的路径上提供JSON文档。

证实Steam OpenID端点的.wellknown / openid-configuration文件不是针对OpenID Connect 制作的。

所以我认为可以说Steam已经停留在OpenID 2.0上并且不是OpenID Connect提供商。

现在我必须寻找一个OpenID 2.0 js客户端,或者转换为Google Sign-In。

答案 1 :(得分:0)

您可以使用我的Steam OpenID Connect提供程序: https://github.com/ImperialPlugins/steam-openid-connect-provider

它也可以作为DockerHub上的Docker映像使用: https://hub.docker.com/r/imperialplugins/steam-openid-connect-provider

这使您可以将OpenID Connect与Steam一起使用。