1

如何获得这样的规则:

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

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

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

编辑

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

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

4

1 回答 1

1

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

为了实现您正在寻找的内容,您可以使用一个策略信息点,它将包含my.company.attributes.subject.rights0x00000040。它将返回一个名为allowed.

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

于 2018-05-31T19:05:34.843 回答