我有以下元素:
- 一个 PHP 后端,提供一个使用 OAuth 保护的 RESTful API(带有 Symfony 2 的 FOSOAuthServerBundle)
- Javascript 前端(AngularJS),即OAuth 客户端。
我的目标是在前端为用户提供一个认证页面,允许他们通过 Javascript 登录和访问 API。
根据这篇文章,我按照以下方式执行此操作:http ://www.bubblecode.net/fr/2013/03/10/comprendre-oauth2/ (不幸的是法语,但如果你滚动一下,图表解释了标准赠款流程为英文):
- 我提供了一个询问用户凭据(登录名和密码)的表格
- 我使用OAuth 隐式授权将用户凭据交换为访问令牌。
到目前为止,一切都应该(几乎)运行良好。
现在,这个问题的原因是我想在我的前端添加 Facebook 登录。每次用户在我的前端使用 Facebook Login 注册时,这将给我一个 Facebook 访问令牌。理想情况下,我的后端应该:
- 得到这个令牌
- 对照 Facebook PHP API 检查它以验证它
- 从 Facebook PHP API 检索用户 Facebook UID
- 将其与我的应用注册用户进行比较
- 当且仅当 Facebook UID 与我注册的应用程序用户之一匹配时,才返回访问令牌(这次是针对我自己的应用程序,而不是 Facebook)。
我的问题是:在这种用例中,我应该使用哪种类型的授权来在我的前端和后端之间进行交易(考虑到从 Javascript 客户端提供我的客户端密码当然是不可接受的)?