Могу ли я использовать xpath-подобное выражение в значении атрибута в файле xacml?

Я хотел бы объявить некоторые политики:

some one can visit anything under the img path, but img folders are scattered everwhere, so the attributevalue in the xacml policy may seem like this: "/rootpath/**XPATH_PART**/img/*".

как написать политику такого рода.

Я просмотрел «основную спецификацию XACML3.0», «Множественный профиль», они говорят

Each Individual Decision Request SHALL be identical to the original request context with two exceptions: the “multiple:content-selector” attribute SHALL NOT be present and an added “content-selector” attribute value SHALL be an XPath expression that evaluates to a single node in the <Content> element

Я думаю, это означает, что в файле политики я не могу использовать XPath в AttributeValue для ссылки на несколько ресурсов, как я сказал в первую очередь, верно? потому что запрос разрешается в отдельный запрос, каждый из которых запрашивает ресурс с указанным идентификатором атрибута.

Есть ли что-то в спецификации, которую я пропустил или неправильно понял? или кто-нибудь может предложить лучший способ сделать то, что я хочу?

Теперь мне интересно, может ли это сделать использование регулярного выражения в ресурсе. Соответствующая функция urn:oasis:names:tc:xacml:1.0:function:string-regexp-match.

P.S.: Я пытаюсь настроить сервер авторизации для своей компании, XACML кажется хорошим местом для начала. Но никто из окружающих меня об этом не знает. Буду признателен, если кто-нибудь может дать мне какие-либо предложения по настройке системы контроля доступа.


person telmo    schedule 03.12.2014    source источник
comment
Я бы хотел помочь. Какой движок или решение вы используете? Нефть ответит на ваш вопрос xpath в ближайшее время   -  person David Brossard    schedule 03.12.2014
comment
Я пытаюсь создать сервер авторизации на Balana (открытый код от WSO2).   -  person telmo    schedule 05.12.2014
comment
Если они не поддерживают регулярное выражение, попробуйте сервер политик Axiomatics.   -  person David Brossard    schedule 05.12.2014
comment
Да, регулярное выражение является частью основной спецификации xacml.   -  person telmo    schedule 05.12.2014
comment
Да, вы правы, но я считаю, что Balana не покрывает 100% спецификации.   -  person David Brossard    schedule 05.12.2014
comment
возможно, но это с открытым исходным кодом :-)   -  person telmo    schedule 08.12.2014


Ответы (1)


Я пообщался с некоторыми из моих коллег из Axiomatics, и пришел к выводу, что вам нужен не XPath, а регулярные выражения. XACML предоставляет функцию регулярного выражения, которая работает с типами данных URI. Он называется anyURIRegexpMatch и принимает строку (регулярное выражение) и атрибут XACML, к которому применяется регулярное выражение. Он возвращает либо истину, либо ложь.

Ваша цель правила будет выглядеть следующим образом в ALFA (Язык аксиоматики для авторизации):

policy matchResources{
    apply firstApplicable
    rule allow{
        target clause anyURIRegexpMatch("^https?://(?:[a-z\\-]+\\.)+[a-z]{2,6}(?:/[^/#?]+)+\\.(?:jpg|gif|png)$", resourceId)
        permit
    }
}

См. также этот другой пример (XACML 2.0): Как Я применяю правила XACML к каждому дочернему URI?

person David Brossard    schedule 03.12.2014