这是在普通网页上使用REST API + OAuth的正确方法吗?

时间:2014-09-28 10:01:26

标签: symfony

首先,由于缺少单词,我使用了#34;普通网页"在标题上。请让我解释一下:

最近,我看到许多网站如shopify.com充分利用了现代浏览器对html5推送状态和Ajax的支持。请求新页面,而不是提交表单,我看到他们通过REST API完成所有这些操作。在我看来,这是一种非常巧妙的做事方式,因为它更快(更少页面重新加载),并且还允许我们重新使用API​​代码。

在这些情况下,用户通常会通过网站访问服务,但是他们与资源的交互是由REST API提供的。

随着我对文档的深入了解,似乎这些API请求应该是无状态的,但应该总是有一种机制来授权/验证每个请求,所以我为此目的调查OAuth2(因为我无论如何都需要OAuth2,才能授予访问第三方)。现在,由于在这种特殊情况下用户的浏览器将充当客户端以通过REST请求资源,我想知道做什么的推荐流程。

现在我打算按照以下方式实施:(我将Symfony 2与FOSRestBundle和FOSAuthServerBundle一起使用)

  1. 用户应该像往常一样通过网络表单登录(因为我们需要对普通网页以及API请求进行身份验证/授权)
  2. 当用户登录时,请立即检查是否已为该用户创建了OAuth客户端?如果没有,则使用GRANT_TYPE_IMPLICIT创建它。如果客户端已经存在,只需检索它。
  3. 继续正常OAuth授权Rest请求吗?
  4. 编辑1:

    进一步的研究让我觉得我不应该将刷新令牌发送回JS应用程序,因为如果浏览器受到损害,这将太危险了。也许我可以在用户登录后在服务器后端的某个位置为用户存储刷新令牌,然后可以为JS应用程序保留一个特殊链接,以便在旧应用程序到期时请求新的访问令牌?这对我来说似乎有点乱。

0 个答案:

没有答案