通过我的 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