Spring Ssecurity ACL - 域状态更改

Spring Ssecurity ACL - Domain State Change

我们已经建立了 spring 安全项目,其中包含基于角色的身份验证和隐式和显式角色的角色层次结构。我们还有一个额外的要求,就是根据领域对象的状态,提供不同的授权。例如:

订购域对象:

标准 spring 安全性 URL 级安全性我们使用 ant 匹配器不足以处理授权要求,因为相同的服务 URLs 用于查看 (GET)并保存(PUT)订单域对象(如果它们处于任何状态)。我们还希望使流程可配置,以了解每个权限集中的哪些字段。

Spring 域对象安全性看起来适用于状态固定或恒定的域对象——特定用户创建的博客条目等...
Spring Domain Object Security 可以满足此要求,还是应该使用自定义代码/配置更好地处理?

你说得很对。 Spring 安全权限评估器和 ACL 基础结构在域对象级别而不是字段级别上工作。您可以创建 EDIT_FIELD1EDIT_FIELD2VIEW_FIELD1 等权限,但感觉有点勉强。当然,您可以使用带有 @PreAuthorize 注释等的其他 Spring 安全基础设施,并使用您的自定义代码进行扩展。

如果您对用户有一定的信心并且可以放松安全性,我建议跳过字段级别,只评估订单状态和角色。你可能想要一些审计日志,看看谁在编辑什么。用户界面中的字段可以变暗以避免意外编辑。我见过工作流应用程序以这种方式运行。