如何将XACML规则应用于每个子URI?

时间:2011-09-23 16:40:28

标签: xml soa xacml xacml2

我正在使用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 个答案:

答案 0 :(得分:4)

你可以使用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>