如何防止经过身份验证的用户欺骗 Restful api 调用

Bob*_*b W 5 rest

所以我构建了一个 RESTful API。它有一个/account/{id}返回用户数据的端点。API 通过身份服务器进行保护,该服务器向请求者颁发可访问端点的 JSON Web 令牌 (JWT) /account/{id}。用户发送包含用户名和密码的请求,并在身份验证成功后收到 JWT 作为回报。现在,用户向 发送请求以获取其帐户信息/account/{id}。该请求在标头中带有令牌,并返回 200 响应,负载中包含用户数据。

如何在端点中授权 {id}?换句话说,经过身份验证的用户只需在端点中添加任何 {id} 即可接收其他用户的数据。如何使用 JWT 来防止这种情况发生?

Cro*_*ten 6

您可以将数据存储在网络令牌中。如果您存储用户的 ID,那么您可以针对他们提出的每个请求来识别他们。这是安全的,因为令牌的内容是用服务器的私钥签名的。因此它们的内容无法更改。

之后,您可以限制 API,以便每个用户只能查询自己的记录,也可以实现一个复杂的角色系统,其中每个用户都有一组角色(例如read-onlyguestmaintaineradminclient等),定义哪些角色端点以及它们如何使用。