我们正在开发基于JAX-RS的Web应用程序。我们有多个参数化端点,可以按资源ID访问 resources 并查询它们的某些方面。我们仅将对单个资源的访问权限限制为对该特定资源具有权限的用户。目前,我们通过在方法开始时以编程方式/手动检查所述访问来执行此操作。以声明/自动方式执行此操作的最佳实践是什么,甚至只是可能性?
当前的端点看起来像这样:
@GET
@Path("/resource/{resourceId}/getWhatever")
@Produces(MediaType.APPLICATION_JSON)
public String getWhatever(@PathParam("resourceId") String resourceId) throws Exception {
checkForResourceAccess(resourceId, userName and security and whatever);
String result = query whatever from resource;
return result;
}
@GET
@Path("/resource/{resourceId}/getAnotherThing")
@Produces(MediaType.APPLICATION_JSON)
public String getAnotherThing(@PathParam("resourceId") String resourceId) throws Exception {
checkForResourceAccess(resourceId, userName and security and whatever);
String result = query another thing from resource;
return result;
}
[...]
到目前为止,我一直在考虑这些解决方案:
由于我们使用SAML 2.0进行单点登录身份验证,情况有些复杂。
那么,实现此授权问题的最佳实践甚至可能性是什么,同时也尽可能符合Java EE规范?