征求意见:架构蓝图,比如级别的安全性

上下文

  1. 在电子商务市场的卖家,其中列表项
  2. 有一个操作项目:: setPrice
  3. 一个项目或客户服务代表的卖家可以改变一个项目的价格。
  4. 对于#3的安全检查被实现接近该项目的数据访问层,以便最大限度地覆盖的安全检查。

乡亲很多的喜欢谈论安全性正交关注,但我(目前?)没有在船上与思考实例级别的安全性特别是当因为被无情地绑在域模型。 底线是,其实我更喜欢在#3的安全性不变的代码中明确指出(通过代码或春季安全EL注解)。 我认为这样的安全不变量是业务逻辑的一部分。 我也想在开发者的面部的安全性。 这不是垂直于自己的责任IMO。

我可能会写类似:

@PreAuthorize("hasRole('CSR_ITEM_WRITER') or #item.seller.id == principal.id') public void setPrice(Item item, Money price) { ... }

我知道,当涉及到不断变化的安全模型这造成了一定的灵活性的(不过是一件坏事考虑让错的含义是什么?)

我们还讨论方法,其中CS代表了“成为”卖家。 有一定的洁净度到(在真的重点围绕域而不是用例的安全模型)。(NB足够的审计将到位有人代表的另一个当检测到)

意见?

--------------解决方案-------------

我觉得你这样做是完全正确的。 当你说安全是一个正交关注,正交什么? 你是110%正确的,当你说这应该是业务逻辑的一部分。

我将随时向代表和卖方之间的距离。 两者都是独特作用; 他们正好有这种特殊情况下重叠。

鉴于在这方面安全的重要性水平,我希望你会写单元测试,演示了相应的结果给连接到该选项的角色一个上海*吨风暴。

我想,你在做什么是一个好主意(目前我在做类似的东西)。

我会建议你采取在Spring Security一看PermissionEvaluator组件(见这里),因为它比普通的注解一些优势

  1. 因为它是更全局的安全机制可以改变容易
  2. 安全评价,可以很容易地与审计日志/监控扩展/ ...
  3. 评估员实施进行单元测试(注释需要一个正在运行的Spring上下文工作,所以他们只能在集成测试进行测试)

到目前为止,我发现这个想法没有直接的缺点。

分类:java的 时间:2015-03-15 人气:28
本文关键词: 安全,JAVA,建筑,春
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 1.839 (s). 11 q(s)