【问题标题】:"RunAs" Support using JBoss PicketLink?“RunAs”支持使用 JBoss PicketLink?
【发布时间】:2016-02-04 15:42:55
【问题描述】:

我们目前正在完成的 Java EE 应用程序使用 JBoss PicketLink 和 Apache DeltaSpike 作为其安全框架。所有身份验证和授权决策都是使用这些库完成的。由于我们的安全性要求很高,我们的大多数 EJB 服务方法都有授权检查。在某些情况下,非特权用户需要执行特权操作。例如,仅允许具有 Admin 角色的用户创建用户帐户。但是,在用户自行注册期间,需要创建用户帐户。通常,我们会为这个敏感操作使用类似“Run As”的东西,这样对于单次调用,非特权用户将有权执行特权操作。

但是,我没有在 PicketLink 文档或示例中看到任何表明 PicketLink 支持此功能的内容。我知道其他安全框架可以这样做。 Java EE 甚至通过 @RunAs 注释支持这一点。但是,我们不希望使用注释来执行此操作,因为我们希望对可以应用的位置进行非常细粒度的控制。

谁能指出我可以解释如何做到这一点的任何文档或示例? PicketLink 是否支持此功能?还是我们运气不好?您是否有其他方法可以用来解决此类情况和要求?

【问题讨论】:

  • 您在PicketLink 中使用XACML 吗? Run As 功能通常是作为身份验证框架和使用属性的策略的组合来实现的,例如代表...
  • 没有。不使用 XACML。这似乎比我们目前认为需要的重量级增加得多。
  • XACML 不是重量级的,但考虑到您的用例,听起来您需要身份验证层来处理模拟

标签: java security jakarta-ee authorization picketlink


【解决方案1】:

应该不需要运行方式。如果允许未经身份验证的用户自行注册,那么您不应将用户创建一揽子限制为管理员。根据定义,非特权用户可以做的任何事情都不是敏感操作。如果管理员在创建用户帐户方面具有更大的灵活性,则编写两种服务方法:管理员用于为他人创建用户帐户的一种,以及未经身份验证的用户用于自助注册的更受限制的一种。

【讨论】:

  • 用户注册只是我们需要这个功能的一个例子。在其他情况下,可能需要在没有经过身份验证的用户时执行特权操作(例如,由 MDB 启动的异步进程)
  • 异步进程是一个更好的例子。就个人而言,我倾向于使用 PicketLink 进行身份验证,但不用于授权,尤其是当授权要求达到一定的复杂度阈值时。授权在应用程序级别很容易处理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-02
  • 1970-01-01
  • 2011-11-13
  • 2010-09-10
  • 1970-01-01
相关资源
最近更新 更多