基于Java webapp API id的安全过滤器

时间:2015-04-16 10:53:11

标签: filter jax-rs security-roles access-rules

我们正在构建我们的API并寻找一种有组织的方式,根据用户拥有的角色和权限授予用户访问权限。

从起点开始,我们有3个角色

  • 管理员:可以获取并修改其组织中的所有内容
  • 团队管理员:只能获取和编辑他的团队信息和用户信息
  • 用户:可以编辑自己的信息

实体

  • 用户

对于安全过滤器:

  1. 我们正在使用带有安全角色的JAX-RS和@RoleAllowed来过滤对资源的访问
  2. if / then / else函数的基于Id的过滤器。具有团队管理员访问权限的示例。

    function isAllowAccess(teamAdminId, userId) {
        allowedUserIdsList = queryfor(teamAdminId);
        if (userId in allowedUserIdsList) then ... else BAD_REQUEST 
    }
  3. 随着多个角色和许多实体的复杂性增加,此代码正在增长。所以我的问题:

    1. 有一个有组织的基于身份的过滤器的最佳方法是什么?是否有信誉良好的库?

    2. 我们是否应该维护一个单独的表,其中包含每个表的可访问ID 每个team_admin_id的实体?然后更新或插入的每一行都将触发此表的更新。

    3. 是否有正式或广泛接受的方法来减少数据库 在每个调用中调用开销只是为了检查team_admin是否是 允许访问特定用户?

0 个答案:

没有答案