REST API仅允许访问资源所有者的URL

时间:2016-07-04 20:14:28

标签: java rest tomcat authorization jax-rs

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

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

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的用户无法在网址中将其ID更改为3,并对ID为3的用户数据执行操作。

注意:我正在使用JAX-RS和Tomcat,而使用API​​的客户端是Android设备。

为实现这一目标,我需要研究什么技术?我觉得我错过了所有这些。

感谢您提供的任何帮助,这让我非常困惑!

1 个答案:

答案 0 :(得分:1)

你需要两件事:

  1. 确认呼叫者身份的逻辑,即您知道呼叫者是Alice。这可以通过OAuth,Open ID Connect或其他协议实现。您可以使用更基本的身份验证, HTTP BASIC Auth但会导致密码反模式,从而与API共享您的密码。
  2. 给予用户的逻辑确定用户可以做什么。这称为授权或访问控制。鉴于您在JAX-RS中,您可以使用消息拦截器查看用户ID,然后查看请求的对象或调用的参数,然后如果经过身份验证的用户不对应,则决定拒绝访问请求的个人资料。您甚至可以使用XACML进行外部授权。但是,考虑到你的简单用例,那就太多了。
  3. 您可以阅读有关JAX-RS拦截器here的更多信息。