如何仅将EJB角色授予某些实体

时间:2017-02-09 14:47:56

标签: java permissions ejb roles user-roles

我们正在构建Java Web应用程序。我们在Wildfly 9.2中使用EJB容器和JPA。

现在我们要集成用户具有特定角色的权限系统,但此角色仅与特定实体一起授予。我将此访问资源部门命名为。

因此,我们将拥有存储在此类表中的用户的权限列表:

| User ID | Department | Role    |
| ------- | ---------- | ------- |
| 1       | A          | MANAGER |
| 1       | B          | ADMIN   |
| 2       | B          | MANAGER |

此外,我们还有全球角色。如果上表中没有相关部门的条目,则用户具有一组全局角色。

| User ID | Role    |
| ------- | ------- |
| 1       | VIEWER  |
| 3       | MANAGER |

在给定部门的情况下,我们如何轻松检查用户是否处于某个角色?

只需使用注释@RolesAllowed,我们就可以检查某个角色,但不限于某个部门。

2 个答案:

答案 0 :(得分:0)

请记住,企业Java安全角色是关于授权

因此,您可以将部门建模为安全系统中的角色。为用户分配多个安全角色是完全可以的。

因此,给了B部门的经理:

@RolesAllowed({"manager", "B"}
public void someBusinessMethod(...) {
     ...
}

只有经理和部门B的用户授权才能调用此方法。

答案 1 :(得分:0)

结果证明EJB没有我们想要的功能。 我们迁移到Apache Shiro Security,对此感到非常满意。

始终必须以编程方式检查基于资源的权限。基于静态角色和权限的检查可以作为注释。