【问题标题】:Java EE Role Management systems - do they exist?Java EE 角色管理系统——它们存在吗?
【发布时间】:2011-01-02 11:59:55
【问题描述】:

我正在考虑创建一个与 Java EE 角色集成的分散式角色管理系统。有这样的东西吗?

示例用例:

系统 A 是一个使用公司角色的受限访问系统。 John 加入了一个团队,并且需要 SYSTEM_A_READONLY 来执行他的功能。他登录到分散的角色管理系统,并请求 SYSTEM_A_READONLY。 Bill 是系统 A 的管理员,并收到 John 已申请此访问权限的通知。然后,他可以登录到同一系统并批准该请求。 John 现在可以访问系统 A。

系统 B 是一个敏感的客户管理系统。它为其服务的每家公司都有 1 个角色。目前它有 SYSTEM_B_CLIENT_FOO、SYSTEM_B_CLIENT_BAR 等。Greg 是该系统的管理员,销售团队通知他 TNT 已作为客户登录。他登录到角色管理系统,并添加新客户端。 Web 应用程序 C(远程托管,但仍使用公司角色)检测到新角色,并将其添加为用户的选项。

希望这是有道理的。我已经考虑过自己制作,但这似乎是一个非常普遍的要求。

【问题讨论】:

    标签: java security jakarta-ee roles


    【解决方案1】:

    我认为不存在这样的事情。这个要求确实似乎很常见,但我认为外表是骗人的。每家公司,对于(范围的)应用程序,都会对管理用户和角色的界面有非常具体的要求。

    根据要求,设置也可能相当简单。如果“提出请求”仅仅意味着“向管理员发送电子邮件”,而“添加客户端”意味着使用生成的简单 CRUD 框架登录并填写表格,那么您已经完成了。

    【讨论】:

      【解决方案2】:

      您可以查看 Apache Shiro http://incubator.apache.org/shiro/,尽管我不确定它是否已准备好迎接黄金时段或完全满足您的需求。

      您可以使用 Spring Security 开发授权组件,特别是通过实现您自己的 AccessDecisionVoter 和 UserDetailsS​​ervice。实体、持久性和 web ui 组件非常简单,您可以在任何您喜欢的框架中执行这些操作。

      【讨论】:

      • 看起来是一个很好的工作基础 - 谢谢。这里有很多很好的答案,但你的看起来是最有趣的。
      【解决方案3】:

      有一些产品可以帮助你 - 比如 bea 的 crosslogix。

      这些通常是逻辑决策引擎,可让您制定复杂的规则,允许角色和权限等内容嵌套和分层。它们还(通常)允许参数化权限检查,例如 如果是当月的最后一周,用户是角色 ACCOUNT_APPROVER

      “检测新角色”通常是集中式系统的副产品 - 即一切都只是查询它,并且 API 非常快,专门用于使查询成为“廉价”操作。

      他们通常不太擅长的(我猜他们认为这不在他们的领域)是围绕批准访问这些角色的工作流程。他们通常会为您提供一个控制台(和一个 API)来修改它们,但将审批工作流程留给您。

      正如之前的发帖人所说——审批位的问题在于它往往是非常特定于公司的——所以它通常作为 API 留下。

      简而言之 - 像 crosslogix 这样的东西可以完成您需要的一半 - 决策逻辑,以及大多数产品都为您提供了一个简单的超级控制台来管理权限逻辑,但如果您想要公司特定的审批逻辑 -您可能必须在顶部为网站蒙皮。

      -王牌

      【讨论】:

        【解决方案4】:

        嗯,对我来说,存在这样一个系统,称为 LDAP(LDAP 组通常映射到 J2EE 角色)。但我承认 LDAP 引擎并没有提供您提到的所有设施和工作流程。实际上,我的经验是这些特定于每家公司(可能是因为缺乏“通用”工具),而且大多数时候,我工作过的公司都有自定义管理应用程序和自定义 API 从应用程序与其交互。

        【讨论】:

          【解决方案5】:

          我们使用了与您的要求非常相似的东西。 Icefaces 的组件具有 renderonUserRole 属性,这可以与 Spring Security 结合来实现您需要的部分功能。 See this

          【讨论】:

          • 谢谢,这看起来很有用,但我真的在寻找管理角色的东西(即配置中没有硬编码)。
          猜你喜欢
          • 2018-08-23
          • 1970-01-01
          • 1970-01-01
          • 2021-04-07
          • 2010-09-29
          • 2010-09-22
          • 1970-01-01
          • 2017-08-10
          • 2018-06-25
          相关资源
          最近更新 更多