如何使用令牌身份验证来保护api端点

时间:2016-02-26 13:34:21

标签: rest validation security authentication token

我的应用程序的后端服务器通过REST API进行通信 用户身份验证通过JSON Web Token(JWT)处理 - 服务器签名的令牌包含用户名

让我们说用户创建了一个ID为5的预订,并具有删除它的权限。 他会通过发送DELETE请求来执行此操作:

api.address/reservations/5

这是一个有效的请求。但有些人可以尝试删除任何其他预留,只需发送一个DELETE请求,其中另一个id用有效令牌签名。

验证服务器端用户权限的最佳方法是什么?到目前为止,我带来了这三个解决方案,但其中任何一个都感觉不对

  1. 每次检查通过数据库进行特权检查(可能很耗时)
  2. 包含用户令牌中的所有资源特权(令牌可能变得非常大)
  3. 仅允许已签名的应用程序访问rest api(可能会伪造该密钥。是否有100%安全的方法来执行此操作?)
  4. 提前致谢!

1 个答案:

答案 0 :(得分:1)

最简单的方法是将用户名或用户ID(来自令牌)与预留一起存储在例如creator字段中。然后在DELETE方法中,检查执行请求的用户(再次来自令牌)是创建者。

如果是,请删除预订并返回204 No content。如果没有,请返回403 Forbidden