如何获得像这样的规则:
rule adminCanViewAllExams {
condition (integerOneAndOnly(my.company.attributes.subject.rights) & 0x00000040) == 0
permit
}
语法荧光笔抱怨它不知道这些项目:
(在问题中添加OP&#39评论)
我想在我目前的申请中保留尽可能多的内容。意思是,我不想在我的数据库模型中做很多改变。我只想实施新的PEP和PDP部分。因此,目前用户的权利存储在Long中。数字中的每一位代表一个权利。为了得到正确的结果,我们进行二进制& -operation,以掩盖Long中的其他位。我们可能会重新设计这个部分,但是知道对数学运算的支持到底有多远仍然很好
答案 0 :(得分:1)
XACML不支持按位逻辑。它可以做布尔逻辑(AND和OR)但是关于它。
要实现您的目标,您可以使用一个政策信息点,该信息点将包含my.company.attributes.subject.rights
和0x00000040
。它将返回一个名为allowed
的属性。
或者,您可以扩展XACML(和ALFA)以添加缺少的数据类型和函数。但我建议采用人类可读的政策。