我正在使用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函数允许我将规则应用于单个目录的所有子目录?
答案 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>