通过我的REST API和Facebook进行用户身份验证

Dex*_*ter 8 authentication rest node.js oauth-2.0 passport.js

我对如何使用我的REST API正确和安全地验证用户感到困惑,并提供了使用其他OAuth 2.0提供程序进行身份验证的选项(例如Facebook,Google等).

脚本

用户与应该使用我的REST API的Web应用程序进行交互.用户应该能够使用用户名/密码和使用Facebook等第三方服务登录和执行CRUD操作.我将使用SSL来加密网站和API的流量.

在没有考虑第三方登录服务的情况下,通过研究SO上已经提到的各种问题,我想到了如图所示处理用户身份验证.

验证序列

技术和当前的想法

REST API是使用NodeJS和Express编写的.通过另一个NodeJS实例提供的WebApp主要是AngularJS,其模板使用REST API.

我目前的想法是让WebApp处理登录序列,并让Facebook使用回调将其令牌保存在我的数据库中.但是这个解决方案闻起来太多了!

问题

  1. 图像中描述的验证序列是否正确?
  2. 如何将上述身份验证序列与OAuth2.0中的资源所有者密码凭据流进行比较?是否值得使用OAuth2.0而不是它?
  3. 如何通过第三方(即Facebook)整合登录?有什么建议或(更好)的例子吗?

参考

passport.js RESTful auth

使用facebook登录并使用oauth 2.0进行REST api调用的身份验证

还有很多其他人在这里:)

Sha*_*ath 0

我的2分..

  1. 这个过程对我来说看起来不错。我会在每次登录时重新颁发令牌,并将其保存在数据库中,以便可以轻松撤销令牌。

使用 PassportJS。它支持 OAuth 流,并支持许多第三方集成,如 FB、Twitter、Github 等。由于它是一个 Nodejs 中间件。它的集成将在您的应用程序中非常紧密。