2011-09-23 3 views
2

Je travaille avec les politiques XACML et j'ai une règle qui inclut une cible de ressources similaire à ce qui suit:Comment appliquer des règles XACML à chaque URI d'un enfant?

<Resources> 
     <Resource> 
     <ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal"> 
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">/MyDirectory</AttributeValue> 
      <ResourceAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#anyURI"/> 
     </ResourceMatch> 
     </Resource> 
    </Resources> 

Je veux cette règle à appliquer à tous les sous-répertoires de /Mydirectory. Cependant, si je devais évaluer une demande avec la ressource /MyDirectory/MySubdirectory, j'obtiendrais une réponse DECISION_NOT_APPLICABLE (3).

Existe-t-il une fonction XQuery qui me permettrait d'appliquer une règle à tous les sous-répertoires d'un même répertoire?

Répondre

4

Vous pouvez utiliser urn: oasis: names: tc: XACML: 2.0: Fonction: anyURI-regexp-match et à définir la AttributeValue comme une expression régulière ..

<Resources> 
     <Resource> 
     <ResourceMatch MatchId="urn:oasis:names:tc:xacml:2.0:function:anyURI-regexp-match"> 
      <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">^/MyDirectory/</AttributeValue> 
      <ResourceAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#anyURI"/> 
     </ResourceMatch> 
     </Resource> 
</Resources> 
+0

a parfaitement fonctionné - merci pour le pointeur! – JoshC13

Questions connexes