2016-02-26 70 views
1

我有我的应用程序通过REST API 用户认证通过JSON网络令牌(JWT)来处理通信的后端服务器 - 由服务器令牌签名的包含用户名如何进行安全的API端点与令牌认证

比方说,用户创建了一个ID为5的预订,并有权删除它。 他会通过发送一个DELETE请求这样做:

api.address/reservations/5 

,这是一个有效的请求。但有些人可以尝试删除任何其他保留,只需发送一个带有有效令牌的另一个ID的DELETE请求即可。

验证服务器端用户权限的最佳方法是什么?到目前为止,我想出了这三种解决方案,但任何那些不通过数据库,每一次感觉不对

  1. 检查的privilages检查(可能耗时)
  2. 包含用户令牌的所有资源的privilages(中令牌可能会得到荒谬大)
  3. 只允许签名的应用程序访问REST API(可能是关键将是伪造的。有没有这样做,100%安全的方式?)提前

谢谢!

回答

1

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

如果是这样,请删除预订并返回204 No content。如果不是,则返回403 Forbidden