如何仅将 EJB 角色授予某些实体
How to grant EJB roles only to certain entities
我们正在构建一个 Java 网络应用程序。我们在 Wildfly 9.2 中使用 EJB 容器和 JPA。
现在我们想集成一个权限系统,在这个权限系统中用户有一定的角色,但是这个角色只有结合某个实体才能被授予。我将此访问资源命名为 Department。
所以我们会为用户存储一个权限列表 table:
| User ID | Department | Role |
| ------- | ---------- | ------- |
| 1 | A | MANAGER |
| 1 | B | ADMIN |
| 2 | B | MANAGER |
此外,我们还有全球角色。如果上面的 table 中没有相关部门的条目,用户将应用一组全局角色。
| User ID | Role |
| ------- | ------- |
| 1 | VIEWER |
| 3 | MANAGER |
给定部门,我们如何轻松检查用户是否担任特定角色?
通过注解@RolesAllowed我们可以检查某个角色,但不限于部门。
请记住,企业 java 安全角色是关于 授权 。
因此,您也可以将该部门建模为您的安全系统中的一个角色。为一个用户分配多个安全角色是完全可以的。
因此,给定部门 B 的经理:
@RolesAllowed({"manager", "B"}
public void someBusinessMethod(...) {
...
}
只有部门 B 中的经理用户才能授权调用此方法。
事实证明,EJB 没有我们想要的功能。
我们迁移到了 Apache Shiro Security,对此非常满意。
始终必须以编程方式检查基于资源的权限。基于静态角色和权限的检查可以是注释。
我们正在构建一个 Java 网络应用程序。我们在 Wildfly 9.2 中使用 EJB 容器和 JPA。
现在我们想集成一个权限系统,在这个权限系统中用户有一定的角色,但是这个角色只有结合某个实体才能被授予。我将此访问资源命名为 Department。
所以我们会为用户存储一个权限列表 table:
| User ID | Department | Role |
| ------- | ---------- | ------- |
| 1 | A | MANAGER |
| 1 | B | ADMIN |
| 2 | B | MANAGER |
此外,我们还有全球角色。如果上面的 table 中没有相关部门的条目,用户将应用一组全局角色。
| User ID | Role |
| ------- | ------- |
| 1 | VIEWER |
| 3 | MANAGER |
给定部门,我们如何轻松检查用户是否担任特定角色?
通过注解@RolesAllowed我们可以检查某个角色,但不限于部门。
请记住,企业 java 安全角色是关于 授权 。
因此,您也可以将该部门建模为您的安全系统中的一个角色。为一个用户分配多个安全角色是完全可以的。
因此,给定部门 B 的经理:
@RolesAllowed({"manager", "B"}
public void someBusinessMethod(...) {
...
}
只有部门 B 中的经理用户才能授权调用此方法。
事实证明,EJB 没有我们想要的功能。 我们迁移到了 Apache Shiro Security,对此非常满意。
始终必须以编程方式检查基于资源的权限。基于静态角色和权限的检查可以是注释。