保护我的私人API

问题描述:

我正在为我自己的消费完成一个API,它用于使用我的API与Laravel进行通信,使用Backbone与我自己的Javascript客户端进行通信。保护我的私人API

我有一个根路由,它提供了在浏览器中加载我的应用程序所需的所有js以及服务于提供我的客户端应用程序的JSON的名为“api/v1”的组下的几个路由。

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

我一直在阅读关于OAuth2的一些信息,并且我已经看到“隐式授权”非常适合无法保持秘密密钥的机密性的客户端,但它要求我将用户发送给一个登录平台,然后将他重定向回应用程序。但我想用我的客户端应用程序来做到这一点,而不影响我的用户工作流程

我见过“资源所有者密码凭据授予”,但它要求我的客户端存储我的应用程序的密钥,这不安全。

我认为我错过了一些东西,任何人都可以指引我朝着正确的方向吗? 在此先感谢

您可以使用Laravel的路由过滤器来保护您的路由免受未经授权的用户。但是,由于您的Laravel应用程序现在只是端点,因此前端框架(就您的情况而言,它是Backbone)将在身份验证和授权方面进行繁重的工作。

一旦设置了路由过滤器,这并不妨碍授权用户尝试执行他们未被授权执行的操作。

我的意思上面是例如:

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

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

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

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

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

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

+0

这是伟大的,我以前用角和你所指出的例子我真的很受启发,它给了我如何实现它在骨干的一些想法。 非常感谢我的朋友。 – Hazzard 2014-10-04 20:55:04