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



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

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

您可以将数据存储在 Web 令牌中。如果您存储用户的 ID,则可以为他们发出的每个请求标识他们。这是安全的,因为令牌的内容是使用服务器的私钥签名的。因此,它们的内容无法更改。

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

最新更新