用于集中式社交登录的2跳“授权码”流程oauth2身份验证

时间:2019-01-13 15:33:28

标签: facebook authentication oauth-2.0 facebook-login google-login

简介

我有自己的用户帐户数据库,并且正在构建oauth2授权服务器,以使用authorization code授予类型在公司网站上集中身份验证逻辑。

假设我已经在https://auth.my.company.com部署了授权服务器的登录页面,并在https://my.website1.com部署了一个网站。当用户单击login上的https://my.website1.com按钮时,将触发典型的oauth2身份验证代码流,如下图所示。

typical oauth2 authorization code grant type

解释图片:

  1. 用户访问https://my.website1.com,这将显示一个登录按钮。
  2. 用户使用URL https://auth.my.company.com?client_id=mysite1&redirect_url=https://my.website1.com/oauth/callback导航到集中式登录页面
  3. 用户输入用户名和密码并提交登录表单。
  4. 认证服务器验证用户凭据后,它将用户重定向回通过参数https://my.website1.com/oauth/callback?auth_code=abcd的redirect_url auth_code=abcd
  5. 网站后端服务器使用输入的auth_code与授权服务器进行通信以验证用户身份,授权服务器返回访问令牌。
  6. 网站回复用户登录过程成功。

问题

https://my.website1.com,我希望用户也可以使用他/她的Facebook帐户登录,该帐户将与我的用户帐户数据库中的帐户绑定。我也想集中进行此过程(即,以便我的另一个站点https://my.website2.com可以重复使用同一登录过程)。因此,我正在考虑实现下图所示的两跳oauth流。

2-hop oauth

  1. 用户访问https://my.website1.com,这将显示一个登录按钮。
  2. 将用户导航到我的集中式Facebook登录端点https://auth.my.company.com/facebook
  3. 授权会解析其Facebook客户端ID和重定向URL,然后将用户重定向至Facebook登录页面。
  4. 用户通过Facebook登录。
  5. Facebook将用户重定向回我的授权服务器,并传递验证码。
  6. 我的授权服务器使用Facebook的身份验证代码通过Facebook API来对用户进行身份验证
  7. 我的授权服务器通过其自身生成的授权代码将用户重定向回https://my.website1.com
  8. 网站后端服务器使用输入的auth_code与授权服务器进行通信以验证用户身份,授权服务器返回访问令牌。
  9. 网站回复用户登录过程成功。

问题

我找不到关于这种2跳oauth的任何引用,因此我担心自己做错了。我想知道是否有标准的方式来处理像这样的集中式社交登录。

1 个答案:

答案 0 :(得分:0)

从IBM网站找到了一个参考,该参考看起来与所讨论的流程非常相似。 Here

相关问题