gpt4 book ai didi

java - JAX-RS 和资源所有权限制

转载 作者:行者123 更新时间:2023-11-30 03:10:43 24 4
gpt4 key购买 nike

有很多关于如何设置 JAX-RS API 的优秀资源和文献。但是,我还没有找到任何资源可以正确描述如何对特定资源和方法进行安全限制。例如,给定资源 PictureResource,只有图片的上传者(和管理员)应该能够删除或更改与图片相关的属性,而任何人都应该能够查看图片。管理员限制很好,可以通过roles解决。 ,但是上传者将取决于调用的上下文。然后,识别用户的 token 将描述谁在调用电话。这可以通过 ContainerRequestFilter 来解决。

@Path("pictures/{pictureId}")
public class PictureResource {

@GET
public Response getPicture(@PathParam("pictureId") final int pictureId) {
// Get the picture, available for all users.
}

@DELETE
public Response deletePicture(@PathParam("pictureId") final int pictureId) {
// Delete the picture, only available for the uploader of the picture and admins.
}

// ...
}

JAX-RS 解决这个问题的方法是什么?我假设这可以通过注释来解决,但对我来说如何做到这一点相当模糊。另一种方法是根据调用的上下文动态为用户分配 pictureOwnerRole 吗?

最佳答案

问题在于离散资源访问控制。您需要一种标准方法来描述正在访问的资源的所有权。谁拥有该资源,以及谁被授予了对该资源的一定范围的权限。

问题是这是非常特定于领域的。资源分组和所有权需要能够查找资源实例或关联的元数据并确定所有权/访问要求。

我不知道有任何安全框架为此提供标准框架或注释。

您可以将图片放入目录结构中,并使用目录访问控制来确定哪些用户对资源有哪些访问权限。

@Secured("ownerDecider=PictureInspector.class") 这样的东西就是我的处理方法。 Spring Security 中的 AccessDecisionVoterAfterInitationProvider 可以使用提供的策略来辨别所有权,并相应地限制访问。

关于java - JAX-RS 和资源所有权限制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33691246/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com