2

我有以下元素:

  • 一个 PHP 后端,提供一个使用 OAuth 保护的 RESTful API(带有 Symfony 2 的 FOSOAuthServerBundle)
  • Javascript 前端(AngularJS),即OAuth 客户端

我的目标是在前端为用户提供一个认证页面,允许他们通过 Javascript 登录和访问 API。

根据这篇文章,我按照以下方式执行此操作:http ://www.bubblecode.net/fr/2013/03/10/comprendre-oauth2/ (不幸的是法语,但如果你滚动一下,图表解释了标准赠款流程为英文):

  1. 我提供了一个询问用户凭据(登录名和密码)的表格
  2. 我使用OAuth 隐式授权将用户凭据交换为访问令牌。

到目前为止,一切都应该(几乎)运行良好。


现在,这个问题的原因是我想在我的前端添加 Facebook 登录。每次用户在我的前端使用 Facebook Login 注册时,这将给我一个 Facebook 访问令牌。理想情况下,我的后端应该:

  • 得到这个令牌
  • 对照 Facebook PHP API 检查它以验证它
  • 从 Facebook PHP API 检索用户 Facebook UID
  • 将其与我的应用注册用户进行比较
  • 当且仅当 Facebook UID 与我注册的应用程序用户之一匹配时,才返回访问令牌(这次是针对我自己的应用程序,而不是 Facebook)。

我的问题是:在这种用例中,我应该使用哪种类型的授权来在我的前端和后端之间进行交易(考虑到从 Javascript 客户端提供我的客户端密码当然是不可接受的)?

4

1 回答 1

1

实际上,我设法找到了解决方案。应设计自定义授权来解决此问题,基于隐式授权(其中不询问客户端密码)。

但是 FOSOauthServerBundle 尚未实现基于公共客户端的授权(有关更多详细信息,请参阅https://github.com/FriendsOfSymfony/FOSOAuthServerBundle/issues/266)。

于 2014-12-11T15:53:32.123 回答