在ALFA中使用数学

时间:2018-05-29 15:05:31

标签: authorization xacml abac alfa

如何获得像这样的规则:

rule adminCanViewAllExams {
        condition (integerOneAndOnly(my.company.attributes.subject.rights) & 0x00000040)  == 0  
        permit
}

语法荧光笔抱怨它不知道这些项目:

  • &安培; (这是二进制数学运算)
  • 0x00000040(这是整数的十六进制表示)

修改

(在问题中添加OP&#39评论)

我想在我目前的申请中保留尽可能多的内容。意思是,我不想在我的数据库模型中做很多改变。我只想实施新的PEP和PDP部分。因此,目前用户的权利存储在Long中。数字中的每一位代表一个权利。为了得到正确的结果,我们进行二进制& -operation,以掩盖Long中的其他位。我们可能会重新设计这个部分,但是知道对数学运算的支持到底有多远仍然很好

1 个答案:

答案 0 :(得分:1)

XACML不支持按位逻辑。它可以做布尔逻辑(AND和OR)但是关于它。

要实现您的目标,您可以使用一个政策信息点,该信息点将包含my.company.attributes.subject.rights0x00000040。它将返回一个名为allowed的属性。

或者,您可以扩展XACML(和ALFA)以添加缺少的数据类型和函数。但我建议采用人类可读的政策。