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

我对如何正确安全地使用REST API对用户进行身份validation以及使用其他OAuth 2.0提供程序(例如Facebook,Google等)进行身份validation提供和select有些困惑。

脚本

用户与一个应该使用我的REST API的Web应用程序进行交互。 用户应该能够使用用户名/密码以及使用Facebook等第三方服务login和执行CRUD操作。 我将使用SSL来encryption网站和API的stream量。

没有考虑到第三方login服务,通过研究这里已经提到的各种问题,我想到如图所示的处理用户authentication。

认证序列

技术和当前的想法

REST API是使用NodeJS和Express使用JS编写的。 通过另一个NodeJS实例提供的WebApp大部分是AngularJS,其中的模板使用了REST API。

我目前的想法是让WebApp处理login序列,并让Facebook使用callback将他们的令牌保存在我的数据库中。 但是这个解决scheme太多的解决方法了!

问题

  1. 图像中描述的validation序列是否正确?
  2. 上述authentication顺序与OAuth2.0中的资源所有者密码凭证stream程相比如何? 值得使用OAuth2.0而不是它?
  3. 我怎样才能通过第三方(即Facebook)整合login? 任何build议或(更好)的例子?

参考

passport.js RESTfulvalidation

用facebooklogin并使用oauth 2.0进行REST API调用的authentication

和其他许多人在这里:)

我的2分钱..

  1. 这个过程对我来说很好。我会在每次login时重新发出令牌,并将其保存在数据库中,因此令牌可以很容易地被撤销。

使用PassportJS。 它获得了对OAuthstream程的支持,并且支持许多第三方集成,比如FB,Twitter,Github等等。而且由于它是一个nodejs中间件,它在你的应用程序中的集成将非常紧密。