我们目前正在完成的 Java EE 应用程序使用 JBoss PicketLink 和 Apache DeltaSpike 作为其安全框架。所有身份验证和授权决策都是使用这些库完成的。由于我们的安全性要求很高,我们的大多数 EJB 服务方法都有授权检查。在某些情况下,非特权用户需要执行特权操作。例如,仅允许具有 Admin 角色的用户创建用户帐户。但是,在用户自行注册期间,需要创建用户帐户。通常,我们会为这个敏感操作使用类似“Run As”的东西,这样对于单个调用,非特权用户将有权执行特权操作。
但是,我没有在 PicketLink 文档或示例中看到任何表明 PicketLink 支持此功能的内容。我知道其他安全框架可以这样做。Java EE 甚至通过 @RunAs 注释支持这一点。但是,我们不希望使用注释来执行此操作,因为我们希望对可以应用的位置进行非常细粒度的控制。
谁能指出我可以解释如何执行此操作的任何文档或示例?PicketLink 是否支持此功能?还是我们运气不好?您是否有我们可以用来解决此类情况和要求的不同方法?