Java 征求意见:实例级安全的架构蓝图
上下文Java 征求意见:实例级安全的架构蓝图,java,spring,security,architecture,Java,Spring,Security,Architecture,上下文 卖家列出商品清单的商业市场 有一个操作项::setPrice 物品的卖家或客户服务代表可以更改物品的价格 #3的安全检查在项目的数据访问层附近实施,以最大限度地扩大安全检查的覆盖范围 很多人喜欢将安全性作为一个正交的问题来讨论,但我(目前?)不同意这种观点,尤其是在考虑实例级安全性时,因为它与域模型有着不可分割的联系。底线是,我实际上更喜欢在代码中明确说明#3中的安全不变量(通过代码或Spring安全EL注释)。我认为这样的安全不变量是业务逻辑的一部分。我还希望开发者的脸上有安全感。这与
@PreAuthorize("hasRole('CSR_ITEM_WRITER') or #item.seller.id == principal.id')
public void setPrice(Item item, Money price) { ... }
我意识到,在发展安全模型时,这会造成一定程度的不灵活性(但考虑到出错的影响,这是一件坏事吗?)
我们还讨论了CS代表必须“成为”卖方的方法。这有一定的清洁度(这实际上是围绕域而不是用例来关注安全模型)。(注意:当某人代表另一人行事时,应进行充分的审计以检测)
意见?我认为你做得完全正确。当你说安全是一个正交关系时,正交关系是什么?当你说这应该是业务逻辑的一部分时,你是110%正确的 我会把销售代表和卖家分开。两者都是独特的角色;对于这种特殊情况,它们碰巧有重叠
考虑到在这种情况下安全性的重要性,我希望您能够编写一系列单元测试,以证明在给定选项所附加的角色的情况下获得适当的结果 我认为你做得完全正确。当你说安全是一个正交关系时,正交关系是什么?当你说这应该是业务逻辑的一部分时,你是110%正确的 我会把销售代表和卖家分开。两者都是独特的角色;对于这种特殊情况,它们碰巧有重叠
考虑到在这种情况下安全性的重要性,我希望您能够编写一系列单元测试,以证明在给定选项所附加的角色的情况下获得适当的结果 我认为你所做的是个好主意(我目前正在做类似的事情) 我建议您看看SpringSecurity中的PermissionEvaluator组件(请参阅),因为它比普通注释有一些优势
到目前为止,我还没有发现这个想法的直接缺点。我认为你所做的是一个好主意(我目前正在做类似的事情) 我建议您看看SpringSecurity中的PermissionEvaluator组件(请参阅),因为它比普通注释有一些优势