我们当前正在完成的Java EE应用程序利用JBoss PicketLink和Apache DeltaSpike作为其安全框架。所有身份验证和授权决策都是使用这些库完成的。由于我们的高安全性要求,我们的大多数EJB服务方法都具有授权检查。在某些情况下,非特权用户将需要执行特权操作。例如,只允许具有Admin角色的用户创建用户帐户。但是,在用户自注册期间,将需要创建一个用户帐户。通常,对于此敏感操作,我们将使用“运行方式”之类的方式,以便对于单个呼叫,非特权用户将有权执行特权操作。
但是,我在PicketLink文档或示例中没有发现任何暗示PicketLink支持此功能的东西。我知道其他可以做到的安全框架。 Java EE甚至通过@RunAs注释支持此功能。但是,我们不希望对批注执行此操作,因为我们希望对可以在何处应用它进行非常细粒度的控制。
谁能指出我要解释该如何做的任何文档或示例? PicketLink支持此功能吗?还是我们不走运?您是否可以使用其他方法来处理这种情况和要求?
最佳答案
不需要运行方式。如果允许未经身份验证的用户进行自我注册,那么您不应该将用户创建仅限于管理员。根据定义,没有特权的用户可以做的任何事情都不是敏感动作。如果管理员在创建用户帐户时具有更大的灵活性,则可以编写两种服务方法:一种用于管理员为其他用户创建用户帐户,另一种用于未经身份验证的用户用于自我注册的限制方法。
关于java - 使用JBoss PicketLink的“RunAs”支持吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35205320/