Openid和RestFul API

6 openid api rest steam

我的网站有一个Restful API,需要进行身份验证.当用户登录网站时,它会执行HTTP基本身份验证(用户名和密码),并返回在API中生成的访问令牌.

但最近我实施了蒸汽登录(是的,蒸汽可以充当OpenID提供商).一切都还可以,但如果没有密码发送,我如何在API上授权用户.

Bru*_*res 2

您不需要用户名和/或密码来验证使用 OpenId 提供商(在您的情况下为 Steam)登录您网站的用户。您需要的是信任这个 OpenId Provider。

这是约翰·克里斯托弗·琼斯 (John Christopher Jones) 在博客文章中关于 OpenId 的一个非常好的定义:

OpenID是一种身份验证策略,未经身份验证的用户访问您的网站,然后通过登录 Google、Twitter、Facebook、Steam 或其他一些OpenID 提供商来验证自己的身份。您的服务器(OpenID 依赖方)与OpenID 提供商(Google 等)交换密钥,然后将用户发送到OpenID 提供商进行登录。

用户使用OpenID 提供商登录后,系统会向您发送用户的 一些信息,以识别他们的身份,并使用您与OpenID 提供商交换的密钥进行签名。此时您可以信任他们的身份,并 根据他们的身份开始将他们“登录”到您自己的系统。

下图显示了 OpenId 流程:

OpenId 流程

如您所见,验证凭据后,OpenId 提供商 (Steam) 会将用户发送回您的网站,包括 URL 中的凭据。有了这些凭证,您需要做的是:

  1. 验证数据库中是否已存在与此凭据关联的用户。如果没有,请创建它。
  2. 创建与该用户关联的 API 令牌。
  3. 为在浏览器上等待的用户(使用 RESTful API 的客户端应用程序)发送 API 令牌。

有了这个 API 令牌,您的客户端应用程序就可以将这些令牌添加到 RESTful API 的每个请求中,就像使用用户名和密码进行身份验证的用户所做的那样。请注意,您的令牌生成策略不能依赖于用户名和密码。