2016-02-04 18 views
1

我们目前正在定稿的Java EE应用程序使用JBoss PicketLink和Apache DeltaSpike作为其安全框架。所有的认证和授权决定都是使用这些库完成的。由于我们的高安全性要求,我们的大多数EJB服务方法都有权限检查。在某些情况下,非特权用户需要执行特权操作。例如,只有管理员角色的用户才能创建用户帐户。但是,在用户自行注册期间,需要创建用户帐户。通常,我们会对此敏感操作使用诸如“运行方式”之类的内容,因此对于单个调用,非特权用户将有权执行特权操作。使用JBoss PicketLink的“RunAs”支持?

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

任何人都可以指向我的任何文档或例子,将解释如何做到这一点? PicketLink支持这种功能吗?或者我们运气不好?你有不同的方法可以用来解决这种情况和要求吗?

+0

您是否在PicketLink中使用XACML?运行方式特征通常作为身份验证框架和使用属性的策略的组合来实现,例如, onbehalfof ... –

+0

不使用XACML。这似乎是比我们现在需要的更重量级的增加。 – Shadowman

+0

XACML并不重量级,但考虑到您的用例,听起来您需要身份验证层来处理模仿 –

回答

0

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

+0

用户注册只是我们需要此功能的一个示例。还有一些时候,如果没有经过身份验证的用户可能需要执行特权操作(例如,由MDB启动的异步进程) – Shadowman

+0

异步过程就是一个更好的例子。就我个人而言,我倾向于使用PicketLink进行身份验证,但不是用于授权,特别是在授权要求达到某个复杂性阈值时。授权很容易处理应用程序级别。 –