授权:根据用户授权过滤数据

时间:2014-05-07 22:23:01

标签: authorization access-control xacml role-base-authorization

我们需要实施如下的授权规则。

如果用户是超级管理员,则向他提供所有客户信息。喜欢订单信息。 如果用户是客户管理员,则仅向他提供自己的客户信息。等

我们计划在DAO层实施过滤。

有什么建议可以创建一个通用设计来处理这种情况?假设我们的应用程序已经具有RBAC的DB模型(基于角色的授权控制)。我们对任何DAO技术都开放,如JPA或iBATIS或本地查询等。

高级验收标准是授权策略应该是可配置的,并且可以在运行时更改。 示例:如果客户管理员可以看到自己的数据,可以在以后的规则中更改以允许他们查看自己和朋友的数据。

我们评估了像XACML这样的授权策略,因为它的复杂性而不喜欢实现它。我们计划编写一个自行开发的解决方案。有任何建议,欢迎。

1 个答案:

答案 0 :(得分:2)

您在答案中写道,您查看了XACML并且没有实现它。你应该做的是采用现成的XACML供应商或开源替代品。你会发现很多类别,如WSO2(开源)或Axiomatics(供应商)。

XACML是细粒度基于属性的访问控制的去因子标准(请参阅NIST关于该主题的page)。它已经有10年了,它背后有IBM,微软,甲骨文,Axiomatics和美国银行等公司。尽管如此,我非常怀疑本土解决方案会做什么。

您正在寻找DAO层的过滤。看起来您可以使用Data Access Filter。它是基于XACML的,您不需要实现任何特定的东西(阅读:开发人员的努力非常低)。

我不能强迫你这样或那样,但我会认真考虑以标准为基础。任何其他方式在短期内听起来都是个好主意,但在中长期内它会严重受挫。