Я не могу понять, как написать правило, которое разрешило бы это требование:XACML правила проверки между ресурсами и объекта с помощью XPath
Давайте предположим, что у меня есть этот запрос:
<Request>
<Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<Content>
<Categories>
<Category name="cat1">
<CategoryValue>A</CategoryValue>
<CategoryValue>B</CategoryValue>
<CategoryValue>C</CategoryValue>
</Category>
<Category name="cat2">
<CategoryValue>B</CategoryValue>
<CategoryValue>E</CategoryValue>
<CategoryValue>F</CategoryValue>
</Category>
</Categories>
</Content>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
<Content>
<Categories>
<Category name="cat1">
<CategoryValue>A</CategoryValue>
</Category>
<Category name="cat2">
<CategoryValue>A</CategoryValue>
<CategoryValue>E</CategoryValue>
<CategoryValue>F</CategoryValue>
<CategoryValue>G</CategoryValue>
</Category>
</Categories>
</Content>
</Attributes>
</Request>
Я хочу написать политику, которая содержит правило с разрешением на эффект, когда для каждого из Category
элементов ресурса, субъект имеет Category
с тем же @name
и, если оба из этих элементов Category
имеют в л восточный один общий CategoryValue
.
В этом примере выше:
- Ресурс имеет "cat1" с "A" - Предмет имеет "cat1" с одним значением, которое A: Разрешение
- Ресурс имеет "КАТ2" с "A" , "E", "F", "G" - Субъект имеет "КАТ2" со значением Е (или F): разрешение
- Окончательный результат этого правила: разрешение
Мой вопрос не на котором functionId
Я должен использовать, но как я могу объединить эти условия? o что правило ведет себя так, как я описал? Как сравнить элементы GenericValue
узлов с тем же @name
?
Я думаю, что мне нужно будет использовать функцию string-at-least-one-member-of
между значениями предмета и ресурсом «cat1», а затем между объектом и ресурсом «cat2», но реальная трудность заключается в том, что PDP не имеет понятия о @name
элементов Category
, поэтому я не могу его жестко закодировать в правиле, и я не знаю, как их выбрать, в частности, для выполнения проверки.
Любая идея по этому вопросу?
ок, я буду делать, как вы говорите по предварительной обработке XML в PEP. Спасибо за этот ответ :) – Kwoinkwoin