使用OAuth协议从我的JS应用程序登录到我的RESTAPI

使用OAuth协议从我的JS应用程序登录到我的RESTAPI,api,rest,symfony,oauth-2.0,fosoauthserverbundle,Api,Rest,Symfony,Oauth 2.0,Fosoauthserverbundle,我用Symfony2构建了自己的restapi。要查询此API,用户必须使用OAuth协议(三条腿流)对自己进行身份验证 现在,我将基于Angularjs应用程序开发前台,我想使用我自己的Angularjs RESTAPI。从前台办公室将用户登录到我的api并获取令牌的最佳方式是什么? 我不希望用户必须授权我自己的应用程序 三条腿的水流真的适合这种情况吗?使用用户名/密码登录支持xauth身份验证可能更好?当您准备好使用第三方捆绑包时,是最好的解决方案之一当您准备好使用第三方捆绑包时,是最好的解

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

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


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

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

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

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

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


在你的情况下,如果你不希望用户必须授权你自己的应用程序,也许一个具有密码授权类型的客户端是解决方案。理论上,密码授予类型可以用来直接将用户名和密码交换为访问令牌,但我从未用FOSUserBundle进行过实验,在文档中也没有找到任何例子。

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

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


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

经过一些研究后,确定,似乎管理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'));

好的,经过一些研究,似乎管理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'));


你能把这个问题说得更清楚一点吗。。。而不考虑个人因素,使其更具一般性?:)从前端应用程序到受oauth2保护的REST API的用户身份验证的最佳方式是什么?你能把这个问题说得更清楚一点吗。。。而不考虑个人因素,使其更具一般性?:)从前台应用程序到受oauth2保护的REST API的用户身份验证的最佳方法是什么?是的,我已经使用此捆绑包提供令牌,实际上我正在寻找从前台办公室获得用户名/密码登录的访问令牌的最佳方法。此()将帮助您,满足您的实际需要。您可以自定义测试部分下的“创建新客户机”部分,但FOSOAuthServerBundle不支持XAuth流(例如Twitter),不是吗?是的,我已经使用此捆绑包提供令牌,实际上我正在寻找一种最好的方法,通过用户名/密码登录从我的前台获取访问令牌。this()将帮助你,为你真正需要的。您可以自定义测试部分下的“创建新客户机”部分,但FOSOAuthServerBundle不支持XAuth流(例如Twitter),不是吗?我认为最合适的解决方案是使用XAuth方式,允许用户使用其登录/密码获取令牌。但是FOSOAuthServerBundle不支持xAuth。。。另一种解决方案是使用来自javascript客户端()的ajax POST请求直接将用户登录到symfony2后端,并返回一个access_令牌,但它有点脏……我认为最合适的解决方案是使用xAuth方式,允许用户使用其登录/密码获取令牌。但是FOSOAuthServerBundle不支持xAuth。。。另一个解决方案是使用来自javascript客户端()的ajax POST请求直接将用户登录到symfony2后端,并返回一个access_令牌,但它有点脏……我们也在使用oauth资源所有者密码凭据,并且工作正常。但是您是否可能有一个客户端代码段来描述如何执行令牌请求?我总是得到“无效的授权类型参数或参数丢失”这是我的客户端调用:返回$http.get(parameters.ROOT\u PATH+'/oauth/v2/token?授权类型=密码&用户名='+username+'&password='+password+'&client\u id='+parameters.API\u client\u id+'&client\u secret='+parameters.API\u client\u secret)@shinework但向客户发送机密不是一个重大的安全风险吗?你把它存储在前端?把
客户端的秘密保存在前端根本不好!!!你有更好的办法隐藏它吗?我们也在做oauth资源所有者密码凭据,并且工作正常。但是您是否可能有一个客户端代码段来描述如何执行令牌请求?我总是得到“无效的授权类型参数或参数丢失”这是我的客户端调用:返回$http.get(parameters.ROOT\u PATH+'/oauth/v2/token?授权类型=密码&用户名='+username+'&password='+password+'&client\u id='+parameters.API\u client\u id+'&client\u secret='+parameters.API\u client\u secret)@shinework但向客户发送机密不是一个重大的安全风险吗?你把它存储在前端?把
客户端的秘密保存在前端根本不好!!!你有更好的办法隐藏它吗?