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

时间:2014-09-01 05:59:46

标签: node.js authentication oauth google-plus google-oauth

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

要求:

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

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

    问题:

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

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

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

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

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

    如果你能告诉我处理这个问题的一般概念,那就太棒了! :)

1 个答案:

答案 0 :(得分:2)

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

Google Hybrid server side signin procedure

总结一下,有2部分;

  1. 从Google
  2. 中检索身份验证令牌
  3. 发送Google身份验证令牌以从服务器交换另一个令牌
  4. 1)要从Google检索身份验证令牌,您可以使用其可用的SDK

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

    3)在您的服务器中,从Google交换身份验证令牌以获取其访问令牌,以便您代表用户使用Google API。您可以检索用户信息,发布Google+信息

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

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