Использование математики в ALFA

Как заставить работать такое правило:

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

Подсветка синтаксиса жалуется, что не знает этих элементов:

  • & (это бинарная математическая операция)
  • 0x00000040 (это шестнадцатеричное представление целого числа)

РЕДАКТИРОВАТЬ

(добавление комментария OP внутри вопроса)

Я хочу сохранить как можно больше в моем текущем приложении. Это означает, что я не хочу сильно менять свою модель базы данных. Я просто хочу реализовать новую часть PEP и PDP. Итак, в настоящее время права пользователя хранятся в файле Long. Каждый бит в числе представляет право. Чтобы получить право, мы выполняем бинарную &-операцию, которая маскирует другие биты в Long. Мы могли бы изменить дизайн этой части, но все равно полезно знать, как далеко зашла поддержка математических операций.


person OneWorld    schedule 29.05.2018    source источник
comment
Что ты пытаешься сделать? Что содержат права на атрибуты?   -  person David Brossard    schedule 29.05.2018
comment
Я хочу сохранить как можно больше в моем текущем приложении. Это означает, что я не хочу сильно менять свою модель базы данных. Я просто хочу реализовать новую часть PEP и PDP. Итак, в настоящее время права пользователя хранятся в файле Long. Каждый бит в числе представляет право. Чтобы получить право, мы выполняем бинарную &-операцию, которая маскирует другие биты в Long. Мы могли бы изменить дизайн этой части, но все равно полезно знать, как далеко зашла поддержка математических операций.   -  person OneWorld    schedule 29.05.2018


Ответы (1)


XACML не поддерживает побитовую логику. Он может выполнять логическую логику (И и ИЛИ), но это все.

Чтобы достичь того, что вы ищете, вы можете использовать информационную точку политики, которая будет принимать my.company.attributes.subject.rights и 0x00000040. Он вернет атрибут с именем allowed.

Кроме того, вы можете расширить XACML (и ALFA), добавив отсутствующие типы данных и функции. Но я бы порекомендовал перейти к удобочитаемым политикам.

person David Brossard    schedule 31.05.2018