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/

相关文章:

java - 如何在android中获取谷歌地图蓝点纬度和经度

Java 度量单位库加法和减法返回不正确的值

java - 了解构造函数的有界通用参数

java - java.library.path 中没有 sqljdbc_auth

java - 如何在 pom.xml 中处理 Web 服务器的不同依赖项要求

java - 物理游戏的内存高效AI对象

java - 在应用程序服务器初始化期间未调用 @PostConstruct 方法

java - Tomcat 上的 j_security_check

java - 带有 Glassfish 的 Geotools : Failed to connect to the EPSG database

java - Intellij 2019.2 : GlassFish requires Java SE version 6. 你的JDK是0版本