0

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

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

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

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

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

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

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

我对其进行了研究,人们建议使用“资源所有者密码凭据”,但它需要在可能不安全的 javascript 中公开客户端密码

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

我是否需要编写使用 UsernamePasswordToken 和防火墙侦听器(如返回 access_token 的 OAuthListener )的客户身份验证提供程序?使用起来安全吗?

4

1 回答 1

0

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

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

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

于 2014-11-19T10:47:16.300 回答