java - Java EE 服务器上的动态角色

标签 java jakarta-ee glassfish authorization roles

我想在专用应用程序中管理用户和角色。例如,此应用程序的用户(“customerX 老板”)可以创建一个新角色“customerX 员工”。如果员工访问 Java EE 应用程序服务器 (GlassFish 3),他应该获得角色“customerX employee”。

这听起来很简单,但它不受 Java EE 支持,因为组在启动时被映射到角色,并且应用程序中的角色是静态的。

在 Java EE (6) 环境中运行时管理用户角色的最佳方式是什么?

最佳答案

Java EE 中的声明式安全性确实不适合此类要求。安全问题可以分为两部分:

  • 身份验证
  • 授权

我曾经有过类似的需求。我们使用内置身份验证来设置主体,然后依赖于默认的 Java EE 登录机制。但是我们最终在应用程序级别手动管理授权部分。

事实上,即使是将要加载并与主体关联的角色(isUserInRole 用于 Web 和 isCallerInRole 用于 EJB)也需要在 中指定web.xmlejb.xml 没有提供足够的灵 active 。然后我们必须从 LDAP 或 ActiveDirectory 手动加载角色(根据委托(delegate)人)。然后,我们使用 EJB3 拦截器和 Servlet 过滤器自行执行安全检查。

不过,我强烈建议坚持使用基于角色的访问控制 (RBAC),不要实现更花哨的东西。有几个框架可以帮助处理自制的 RBAC。

我们还查看了 JSecurityAcegi Security他们看起来很有趣。

关于java - Java EE 服务器上的动态角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2230717/

相关文章:

使用 asadmin 重新加载 GlassFish 应用程序

java - 无法加载 EJB 模块

java - 对象克隆浅拷贝不改变变量

java - 为什么这个调用堆栈如此奇怪?

java - 如何在服务器端执行JS?

java - Hibernate,在单个操作中保存集合属性

java - Glassfish:EJB 容器初始化错误

java - 根据对象属性将 java 集合拆分为子集合

java - 在jsp中显示数组值

java - 应该如何将 tomcat 与现有项目一起使用?