在 ALFA 中使用数学

Use of math in ALFA

如何使这样的规则生效:

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

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

编辑

(在问题中添加OP的评论)

我想尽可能多地保留在我当前的应用程序中。意思是,我不想在我的数据库模型中做太多改变。我只想实施新的 PEP 和 PDP 部分。所以,目前用户的权限存储在一个Long中。数字中的每一位代表一个权利。为了获得正确的结果,我们进行了二进制 &- 操作,它屏蔽了 Long 中的其他位。我们可能会重新设计这部分,但了解对数学运算的支持程度仍然很好

XACML 不支持按位逻辑。它可以执行布尔逻辑(AND 和 OR),仅此而已。

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

的属性

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