Je ne peux pas comprendre comment écrire une règle qui résoudrait cette exigence:XACML vérification des règles entre les ressources et sujet avec XPath
Supposons que j'ai cette demande:
<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>
Je veux écrire une politique qui contient une règle avec un permis effet lorsque pour chacun des éléments Category
de la ressource, le sujet a une Category
avec le même @name
et si ces deux éléments a Category
à l est un commun CategoryValue
.
Dans cet exemple ci-dessus:
- ressources a "cat1" avec "A" - sujet a "cat1" avec une valeur qui est un: permis
- ressource a "cat2" avec "A" , "E", "F", "G" - sujet a "cat2" avec une valeur E (ou F): permis
- résultat final de la règle: permis
Ma question n'est pas sur lequel functionId
Je devrais utiliser, mais comment puis-je combiner ces conditions s o que la règle se comporte comme je l'ai décrit? Comment comparer les GenericValue
éléments de nœuds qui ont le même @name
?
Je pense que je vais devoir utiliser la fonction string-at-least-one-member-of
entre les valeurs du sujet et de la ressource "cat1", puis entre le sujet et la ressource "cat2", mais la vraie difficulté est que le PDP n'a aucune idée de @name
des éléments Category
, donc je ne peux pas le coder directement dans la règle et je ne sais pas comment les sélectionner en particulier pour effectuer la vérification.
Une idée à ce sujet?
ok, je ferai comme vous le dites par prétraitement le XML dans le PEP. Merci pour cette réponse :) – Kwoinkwoin