Регулярное выражение XACML не соответствует - PullRequest
1 голос
/ 02 мая 2019

У нас есть файл XACML, в котором много правил, и мы не хотим обрабатывать все правила. Мы пытаемся добавить целевой тег, который будет применяться не ко всем правилам, а только к определенным правилам.

Мы попробовали с регулярным выражением "abc:def:gh:1234.*" и хотели обработать правила только для атрибутов, которые соответствуют этому выражению

Но правила с этим шаблоном не совпадают, мы хотели сопоставить этот тип шаблона

"abc:def:gh:1234:test"

"abc:def:gh:1234-test"

Только эта строка соответствует "abc:def:gh:1234.Test" что-нибудь после 4 с "." соответствует

Нам нужно проверить только начало строки и попробовать

"^abc:def:gh:1234"

также мы попробовали содержит

"abc:def:gh:1234"

но ни одно из регулярных выражений не работает, любая помощь с регулярным выражением очень ценится

<Target>
  <AnyOf>
    <AllOf>
      <Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-regexp-match">
        <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">abc:def:gh:1234.*</AttributeValue>
        <AttributeDesignator AttributeId="jpmc:resource:resource-id" Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="false"/>
      </Match>
    </AllOf>
  </AnyOf>
</Target>

1 Ответ

0 голосов
/ 02 мая 2019

Вы должны избегать использования регулярных выражений (как правило) и особенно в XACML. Политики XACML предназначены для легкого чтения. Попробуйте использовать любую из следующих функций ( нотация):

  • stringEqual
  • stringEndsWith
  • stringStartsWith
  • stringContains

В качестве альтернативы, вы должны обработать / нормализовать значения либо в точке применения политики (PEP), либо в точке информации о политике (PIP). У Axiomatics (там, где я работаю) есть Groovy PIP, который позволит вам делать такие вещи и поддерживать политику в чистоте.

...