Java RESTAPI只允许资源所有者访问URL

Java RESTAPI只允许资源所有者访问URL,java,rest,tomcat,authorization,jax-rs,Java,Rest,Tomcat,Authorization,Jax Rs,我目前正在为社交网络应用程序设计RESTAPI 我正在尝试决定如何为每个用户锁定对特定资源的访问。例如,我有以下URL的 https://social-network.com/api/user?id=2/someUpdateOrPostOp (or https://social-network.com/api/user/id=2/someUpdateOrPostOp) https://social-network.com/api/user?id=3/someUpdateOrPostOp 当然

我目前正在为社交网络应用程序设计RESTAPI

我正在尝试决定如何为每个用户锁定对特定资源的访问。例如,我有以下URL的

https://social-network.com/api/user?id=2/someUpdateOrPostOp 
(or https://social-network.com/api/user/id=2/someUpdateOrPostOp)
https://social-network.com/api/user?id=3/someUpdateOrPostOp
当然,我需要的是id=2的用户不能在url中将其id更改为3,并且不能对id为3的用户的数据执行操作

注意:我将JAX-RS与Tomcat一起使用,使用API的客户端是Android设备

我需要研究什么技术来实现这一点?我觉得这一切让我错过了什么

谢谢你能提供的任何帮助,这让我非常困惑

你需要两件事:

  • 确认呼叫者身份的逻辑,即您知道呼叫者是Alice。这可以通过OAuth、Open ID Connect或其他协议实现。您可以使用更基本的身份验证,例如HTTP basic Auth,但这会导致密码反模式,从而与API共享密码
  • 给定用户的逻辑决定了该用户可以做什么。这称为授权或访问控制。如果您在JAX-RS中,您可以使用消息拦截器查看用户ID,然后查看请求的对象或调用的参数,如果经过身份验证的用户与请求的概要文件不一致,则决定拒绝访问。您甚至可以在XACML中使用外部化授权。不过,考虑到您的简单用例,这就太多了
  • 您可以阅读更多关于JAX-RS拦截器的内容