在Symfony中使用休息来验证用户的最佳/推荐方法是什么?

时间:2014-11-11 10:54:57

标签: php rest symfony oauth-2.0 fosoauthserverbundle

我正在symfony应用程序中开发rest apis。

现在我的应用程序仅在前端使用我的apis(Angularjs的ajax请求)。将来我也想向第三方应用程序公开相同的API。

此外,我将来会有Android,iPhone应用程序等。

我已经集成了FOSOAuthServerBundle,并尝试了所有授权类型的工作流程。一切正常。但我很困惑,我的应用程序可以使用它们,还是仅适用于喜欢与我的应用程序集成的第三方应用程序?

我了解第三方应用如何使用这些工作流程。但是我真的无法理解如何验证我的原生应用程序用户?

我想知道如何使用此捆绑包通过我的前端应用程序中的rest apis对我网站上的用户进行身份验证?

目前我是usnig FOSUserBundle和form_long来验证用户,但我正在改变前端以使用Angularjs和rest。因此理想情况下,身份验证应该像form_login身份验证一样工作,但它应该基于休息。

我对它做了研究,人们建议使用"资源所有者密码凭证"但它需要客户端秘密在javascript中公开,这可能不安全

它应该工作,例如用户提交用户名/密码凭证,就像在form_login的情况下一样,但不是重定向它应该只返回access_token。

我是否需要编写使用UsernamePasswordToken的客户身份验证提供程序和OAuthListener之类的防火墙侦听器,它返回access_token?这样可以安全使用吗?

1 个答案:

答案 0 :(得分:0)

这里有一些类似讨论的类似问题: Symfony2 FOSOAuthServerBundle grant type password requires client secret

如果您不想公开机密,请在前端角度代码和实际OAuth服务器之间使用代理。无论如何,如果你暴露秘密,它仍然需要用户凭据。

您可以为每个OAuth客户端设置允许的授权类型,因此,如果您创建了移动应用,那么您需要生成一对单独的client_id&应用程序和前端的client_secret,唯一允许的授权类型为"密码"对于前端应用程序。