我对如何正确和安全地使用我的REST API进行用户身份验证并提供使用其他OAuth 2.0提供商(例如Facebook,Google等)进行身份验证的选项有些困惑。
场景
用户与Web应用程序交互,该应用程序应使用我的REST API。用户应能够使用用户名/密码和使用第三方服务(如Facebook)登录并执行CRUD操作。我将使用SSL加密网站和API的流量。
在不考虑第三方登录服务的情况下,并通过研究已经在SO上提出的各种问题,我考虑处理用户身份验证,如图片所示。
在不考虑第三方登录服务的情况下,并通过研究已经在SO上提出的各种问题,我考虑处理用户身份验证,如图片所示。
技术和当前想法
REST API使用NodeJS和Express编写的JS。通过另一个NodeJS实例提供的WebApp主要使用AngularJS模板来消耗REST API。
我的当前想法是让WebApp处理登录序列,并让Facebook使用回调在我的DB中保存他们的token。但这个解决方案太过于变通了!
问题
- 图像中描述的身份验证序列是否正确?
- 与OAuth2.0中的资源所有者密码凭证流相比,上述身份验证序列如何?值得使用OAuth2.0而不是它吗?
- 如何通过第三方(例如Facebook)进行登录?有任何建议或更好的示例吗?
参考文献
使用oauth 2.0登录Facebook并对REST api调用进行身份验证
还有其他很多关于SO的文章 :)