0

我已经用 Symfony2 构建了我自己的 REST API。要查询此 API,用户必须使用 OAuth 协议(三腿流)对自己进行身份验证。

现在,我将基于 Angularjs 应用程序开发前台,并且我想使用我自己的来自 angularjs 的 Rest API。从前台将用户登录到我的 api 并获取令牌的最佳方法是什么?我不希望用户必须授权我自己的应用程序。

三腿流真的适合这种情况吗?也许更好地支持使用用户名/密码登录的 xauth 身份验证?

4

3 回答 3

4

好的,经过一些研究,似乎管理 JS 客户端和 Symfony2 后端之间的登录/身份验证的最简单方法是使用密码授予类型(感谢@ricoux),它允许用户使用用户名/密码获取令牌,如下所示:

http://host.com/oauth/v2/token?grant_type=password&username=Bat&password=test&client_id=clientidkey&client_secret=clientsecretkey

使用,您需要在创建客户端时设置允许的授权类型:

    $clientManager = $this->container->get('fos_oauth_server.client_manager.default');

    $client = $clientManager->createClient();

    $client->setName('ApiTest');
    $client->setRedirectUris(array('URL' => 'http://callbackurl.com'));
    $client->setAllowedGrantTypes(array('token', 'authorization_code', 'password'));
于 2013-05-30T10:48:56.857 回答
1

我尝试做完全相同的事情:带有 symfony2 的 REST API 和带有 angularjs 的 javascript 客户端...

正如 Nisam 所说,FOSOAuthServerBundle 是在您的 symfony2 应用程序中集成 OAuth2 授权服务器的最佳捆绑包。

在您的情况下,如果您不希望用户必须授权您自己的应用程序,那么具有密码授予类型的客户端可能是解决方案。理论上,密码授权类型可用于直接将用户名和密码交换为访问令牌,但我从未使用 FOSUserBundle 进行过实验,并且我在文档中找不到任何示例。

于 2013-05-30T08:10:16.187 回答
0

当您准备好使用第三方捆绑软件时,FOSOAuthServerBundle是最好的解决方案之一

于 2013-05-27T15:41:29.460 回答