保护我的私有API

时间:2014-10-02 21:22:44

标签: javascript api backbone.js laravel oauth

我正在为自己的消费完成一个API,它用于通过Backbone与我用Laravel制作的API进行通信。

我有一个根路由,用于在浏览器中加载我的应用程序所需的所有j,以及名为" api / v1"它提供了为我的客​​户端应用程序提供的JSON。

我需要我的用户可以使用该应用删除数据,例如软删除旧用户和修改其他数据,但其中一些数据包含我不希望别人看到的敏感信息。

我一直在阅读有关OAuth2的一些信息,我已经看过" Implicit Grant"非常适合那些无法保持Secret密钥机密性的客户,但它要求我将用户发送到登录平台,然后将其重定向回应用程序。但我希望使用我的客户端应用程序来实现这一点,而不会影响我的用户工作流程。

我已经看过"资源所有者密码凭证授权"但它要求我的客户存储我的应用程序的密钥,而且这不安全。

我认为我错过了什么,有人能指出我正确的方向吗? 提前谢谢

1 个答案:

答案 0 :(得分:1)

您可以使用Laravel的路由过滤器来保护您的路由免受未经授权的用户的攻击。但是,由于您的Laravel应用程序现在只是一个端点,因此前端框架(在您的情况下是Backbone)将在认证和授权方面做得非常繁重。

设置了路由过滤器后,这不会阻止授权用户尝试执行他们无权执行的操作。

我的意思是上面的例子:

您有一个API端点:/api/v1/users/159/edit

端点是RESTful 7之一,可用于编辑用户。任何软件工程师或开发人员都知道这是一个RESTful端点,如果您的应用程序授权,可以向该端点发送包含数据的请求。

您只希望用户159能够执行此操作或管理员。

对此的解决方案是角色/组/权限,无论您想要调用它们。在Backbone应用程序中设置应用程序的用户权限。

阅读这篇伟大的文章(在AngularJS中),了解如何使用前端JavaScript框架正确地进行身份验证/授权。就像我说的那样,它是在Angular中,但它的想法是一样的。

文章:https://medium.com/opinionated-angularjs/techniques-for-authentication-in-angularjs-applications-7bbf0346acec