Как применить правила XACML к каждому дочернему URI? - PullRequest
2 голосов
/ 23 сентября 2011

Я работаю с политиками XACML, и у меня есть правило, которое включает цель ресурса, подобную следующей:

    <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>

Я хочу, чтобы это правило применялось ко всем подкаталогам /Mydirectory.Однако, если бы я оценивал запрос с ресурсом /MyDirectory/MySubdirectory, я бы получил ответ DECISION_NOT_APPLICABLE (3).

Существует ли функция XQuery, которая позволила бы мне применить правило ко всем подкаталогамодин каталог?

1 Ответ

4 голосов
/ 23 сентября 2011

Вы можете использовать urn: oasis: names: tc: xacml: 2.0: function: anyURI-regexp-match и определить AttributeValue как регулярное выражение.

<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>
...