通过我的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太多的解决方法了!
问题
- 图像中描述的validation序列是否正确?
- 上述authentication顺序与OAuth2.0中的资源所有者密码凭证stream程相比如何? 值得使用OAuth2.0而不是它?
- 我怎样才能通过第三方(即Facebook)整合login? 任何build议或(更好)的例子?
参考
passport.js RESTfulvalidation
用facebooklogin并使用oauth 2.0进行REST API调用的authentication
和其他许多人在这里:)
我的2分钱..
- 这个过程对我来说很好。我会在每次login时重新发出令牌,并将其保存在数据库中,因此令牌可以很容易地被撤销。
使用PassportJS。 它获得了对OAuthstream程的支持,并且支持许多第三方集成,比如FB,Twitter,Github等等。而且由于它是一个nodejs中间件,它在你的应用程序中的集成将非常紧密。