我正在为自己的消费完成一个API,它用于通过Backbone与我用Laravel制作的API进行通信。
我有一个根路由,用于在浏览器中加载我的应用程序所需的所有j,以及名为" api / v1"它提供了为我的客户端应用程序提供的JSON。
我需要我的用户可以使用该应用删除数据,例如软删除旧用户和修改其他数据,但其中一些数据包含我不希望别人看到的敏感信息。
我一直在阅读有关OAuth2的一些信息,我已经看过" Implicit Grant"非常适合那些无法保持Secret密钥机密性的客户,但它要求我将用户发送到登录平台,然后将其重定向回应用程序。但我希望使用我的客户端应用程序来实现这一点,而不会影响我的用户工作流程。
我已经看过"资源所有者密码凭证授权"但它要求我的客户存储我的应用程序的密钥,而且这不安全。
我认为我错过了什么,有人能指出我正确的方向吗? 提前谢谢
答案 0 :(得分:1)
您可以使用Laravel的路由过滤器来保护您的路由免受未经授权的用户的攻击。但是,由于您的Laravel应用程序现在只是一个端点,因此前端框架(在您的情况下是Backbone)将在认证和授权方面做得非常繁重。
设置了路由过滤器后,这不会阻止授权用户尝试执行他们无权执行的操作。
我的意思是上面的例子:
您有一个API端点:/api/v1/users/159/edit
端点是RESTful 7之一,可用于编辑用户。任何软件工程师或开发人员都知道这是一个RESTful端点,如果您的应用程序授权,可以向该端点发送包含数据的请求。
您只希望用户159能够执行此操作或管理员。
对此的解决方案是角色/组/权限,无论您想要调用它们。在Backbone应用程序中设置应用程序的用户权限。
阅读这篇伟大的文章(在AngularJS中),了解如何使用前端JavaScript框架正确地进行身份验证/授权。就像我说的那样,它是在Angular中,但它的想法是一样的。