我目前正在构建一个API驱动的symfony2 web应用程序。这是一个学习symfony2和REST的基本应用程序。
它将基于RESTful api。将使用OAuth对API的调用进行身份验证。
例如: 如果客户端应用程序想要通过API获取数据(有关所有结果的信息),则需要向URL发出GET请求并将访问令牌作为参数传递。所以url看起来像这样。
http://www.mysite.com/api/fruits.json?=<access token>
现在问题是我在我的一个行动中也需要相同的数据。
我需要一些帮助。为了在我的一个动作中从上面的url获取数据,我还需要在URL中发送一个访问令牌。
我如何获得此访问令牌?
是否有固定的令牌将用于我的应用程序中的所有此类调用?
答案 0 :(得分:1)
如果你想在这里做你想做的事情,你的基本应用程序项目会不断变化。
基本上,您需要为此实现身份验证服务器。
i)首先,应用程序应注册范围;
ii)使用该应用程序,用户登录到认证/授权服务器
iii)服务器验证应用程序是否可以访问范围以及用户是否已在系统中注册
iv)服务器创建访问令牌(这是一个HMAC签名字符串)并返回到您的应用程序
v)然后应用程序使用令牌命中端点(restful API)
vi)RESTful服务然后在内部将令牌发送到服务器并获取进行调用的customerID并执行它应该执行的操作。
我写了一篇关于如何创建OAuth服务/提供商的答案 - How would an efficient OAuth2.0 server / provider work?
此外,OAuth的设计使得客户端应用程序/第三方软件可以代表他访问用户的资源。一个非常简单的例子是=一个应用程序代表您在Facebook墙上发布内容。它实际上是访问您拥有的资源(墙)并发布到它。您不需要OAuth来获取某些数据 - 还有其他方法可以保护API。