2014-09-01 62 views
4

我无法理解认证标准流程和授权谷歌+,而无需使用护照没有Passport.js谷歌+认证

要求:

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

当前架构:

  • 我有一个REST API服务器,智威汤逊(JSON网络令牌),
  • 用户会从我的服务器,获得访问令牌时,他们做了POST /登录
  • 我的服务器,将检查用户名和密码并访问令牌返回
  • 需要为未来的API查询,我的服务器,该令牌

问题:

i)我该如何用Google +取代我目前的认证?

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

iii)但是,我的服务器没有这个用户的信息吗?我需要先在我的服务器上创建这个用户,当它发送一个访问令牌给我的服务器时,我会检查这个用户是否有效并返回它与我的服务器访问令牌? (所以对于这个用户,我的服务器数据库没有密码信息,并且这个来自谷歌的访问令牌将被存储在我的服务器中?)

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

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

这将是伟大的,如果你能告诉我一般的概念来处理这个!:)

回答

1

这是落实登入Google+

Google Hybrid server side signin procedure

概括起来,有2部分最推荐的方式;

  1. 从谷歌
  2. 检索身份验证令牌发送谷歌身份验证令牌从服务器

1)交换另一种令牌来获取来自谷歌的身份验证令牌,你可以使用其现有的软件开发工具包

2)一旦你得到了从谷歌身份验证令牌,再次发送回从客户到您的服务器

3)在你的服务器,交换ŧ他从Google获取来自Google的令牌以访问令牌,以允许您代表用户使用Google API。你可以检索用户信息,发布的Google+信息

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

5)在你的客户,节省您的服务器生成的访问令牌用于CRUD从你的服务器