基于令牌的身份验证:限制到特定用户的路由

时间:2019-02-28 06:15:41

标签: jwt token restful-authentication

我有一个实现JSON Web令牌身份验证的快速后端。用户提供正确的用户名和密码后,就会使用Secret生成令牌。

现在,假设该用户想要删除其项目,为此,将DELETE请求发送到programs /:programId。 API服务器使用JWT中间件来验证令牌是否有效,然后更新数据库。

基本上我的问题是:如何确保提出请求的用户是项目的所有者?如果我可以使用任何有效令牌和有效正文简单地将请求发送到正确的路由,那么什么能阻止任何用户发送恶意请求以及删除/编辑/访问其他用户的数据?

这与JWT有效负载有关吗?

谢谢。

1 个答案:

答案 0 :(得分:1)

有几种方法可以处理此问题,并且您选择的确切解决方案将取决于您的体系结构,是否使用API​​网关等。

防止用户删除他人项目的一种方法是更改​​delete API,使其也需要用户ID作为输入参数之一。假设您仅进行了此更改,那么您的工作流程将如下所示:

  • 用户使用JWT向服务器发送请求
  • 服务器尝试取消JWT的签名/打开
  • 如果成功,则服务器会检查声明(例如到期)以确保令牌有效,然后提取用户名
  • 然后,服务器将来自请求的传入programId以及来自JWT的用户ID路由到删除端点
  • 内容被删除

上面的关键点是服务器从外部接受用户ID。而是由用户证明自己具有有效的JWT,可以从中提取其用户ID。