没有Passport.js的Google +身份验证

Tim*_*Tim 6 authentication oauth node.js google-plus google-oauth

我无法理解Google +的身份验证和授权标准流程,而无需使用Passport

需求:

  1. 没有passport.js(我知道使用它很简单,但我不想使用它)
  2. 没有会话(不会使用任何会话,我想维持无国籍状态)

目前的架构:

  • 我有一个REST API服务器,带有JWT(JSON Web令牌),
  • 用户在进行POST /登录时会从我的服务器获取访问令牌
  • 我的服务器,将检查用户名和密码,并返回访问令牌
  • 我的服务器中的未来API查询需要此令牌

题:

i)如何用Google +替换当前的身份验证?

ii)当我使用Google +按钮登录时,我在客户端获得了一个访问令牌,我是否将令牌发送回我的服务器?

III),但是,我的服务器没有该用户的信息?我需要先在我的服务器上创建该用户,而当它发送一个访问令牌到我的服务器,我会检查该用户是有效的,并与我的服务器返回它访问令牌?(对于这个用户,我的服务器数据库上没有密码信息?,谷歌的这个访问令牌会存储在我的服务器上吗?)

iv)我读到 他们正在使用会话的文档https://developers.google.com/+/web/signin/server-side-flow,当用户第一次访问该页面时,我不想使用sessiosn

我想知道一般流程,我自己可以实现的代码,我只想知道解决这个问题的通用架构!

如果你能告诉我处理这个的一般概念,那将是很棒的!:)

Tim*_*Tim 3

这是实施 Google+ 登录的最推荐方式

Google 混合服务器端登录过程

总结起来,有2部分;

  1. 从 Google 检索身份验证令牌
  2. 发送 Google 身份验证令牌以从您的服务器交换另一个令牌

1) 要从 Google 检索身份验证令牌,您可以使用他们可用的 SDK

2) 从 Google 获得身份验证令牌后,再次将其从客户端发送回服务器

3) 在您的服务器中,将 Google 的身份验证令牌交换为其访问令牌,以允许您代表用户使用 Google API。您可以检索用户信息、发布 Google+ 帖子

4) 生成您自己的服务器访问令牌并将其发送回客户端

5) 在您的客户端中,保存服务器生成的访问令牌,用于从服务器进行 CRUD