代码之家  ›  专栏  ›  技术社区  ›  OneWorld

数学在阿尔法中的应用

  •  1
  • OneWorld  · 技术社区  · 8 年前

    如何让这样的规则生效:

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

    语法高亮显示程序抱怨它不知道这些项目:

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

    编辑

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

    我希望在当前的应用程序中尽可能多地保留。也就是说,我不想在我的数据库模型中改变太多。我只想实现新的PEP和PDP部分。因此,当前用户的权限存储在一个长的。数字中的每一位代表一个右位。为了得到正确的结果,我们进行了一个二进制运算,它掩盖了长时间内的其他位。我们可以重新设计这一部分,但是知道对数学运算的支持有多大还是很好的。

    1 回复  |  直到 8 年前
        1
  •  1
  •   David Brossard    8 年前

    XACML不支持位逻辑。它可以做布尔逻辑(和或),但这就是问题所在。

    为了达到你想要的目标,你可以使用一个政策信息点 my.company.attributes.subject.rights 0x00000040 . 它将返回一个名为 allowed .

    或者,可以扩展xacml(和alfa)以添加缺少的数据类型和函数。不过,我建议您采用人性化的策略。