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

Posted

技术标签:

【中文标题】通过我的 REST API 和 Facebook 进行用户身份验证【英文标题】:User authentication through my REST API and Facebook 【发布时间】:2013-06-01 13:56:51 【问题描述】:

对于如何使用我的 REST API 正确、安全地对用户进行身份验证,以及如何使用其他 OAuth 2.0 提供商(例如 Facebook、Google 等)进行身份验证,我有点困惑。

场景

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

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

技术和当前理念

REST API 是使用 NodeJS 和 Express 使用 JS 编写的。通过另一个 NodeJS 实例提供的 WebApp 主要是带有模板的 AngularJS,它使用 REST API。

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

问题

    图片中描述的身份验证顺序是否正确? 上述身份验证顺序与 OAuth2.0 中的资源所有者密码凭证流程相比如何?用 OAuth2.0 代替它值得吗? 如何通过 3rd 方(即 Facebook)集成登录?有什么建议或(更好的)例子吗?

参考文献

passport.js RESTful auth

Login with facebook and using oauth 2.0 for authentication of REST api calls

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

【问题讨论】:

【参考方案1】:

我的 2 美分..

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

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

【讨论】:

以上是关于通过我的 REST API 和 Facebook 进行用户身份验证的主要内容,如果未能解决你的问题,请参考以下文章

从移动设备登录 Spring Security、Rest api 和 Facebook

接受 facebook 登录到我的 REST API

iOS、REST API - Facebook 登录

使用 Facebook 进行身份验证的网站的 REST API

如何优化 REST API 调用

Parse 的 REST API 和 PHP Curl 请求 - 如何