我正在使用XACML策略,我有以下资源:
<Resources>
<Resource>
<ResourceMatch MatchId="urn:oasis:names:tc:xacml:1.0:function:anyURI-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#anyURI">mail</AttributeValue>
<ResourceAttributeDesignator AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" DataType="http://www.w3.org/2001/XMLSchema#anyURI"/>
</ResourceMatch>
</Resource>
</Resources>
我希望此资源是字符串而不是anyURI类型,以便将任何类型的数据作为资源进行操作。否则,anyURI数据类型的可能值是什么?
答案 0 :(得分:1)
规范说资源ID SHELL be anyURI。所以理论上你可以使用字符串数据类型。那么函数将是字符串相等的。
同时,在大多数情况下,您可以毫无问题地使用anyURI。例如,字符串“Alice”是anyURI。
或者你可以引入另一个属性,只需恰当地命名并使用而不是resource-id。
答案 1 :(得分:0)
除了Mike所说的,你总是可以使用完全相同的id,类别(如果在XACML 3.0中)和可选的issuer创建一个新属性,但是将数据类型从anyURI更改为string:
<ResourceAttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType="http://www.w3.org/2001/XMLSchema#string"/>
只需确保您的XACML请求和XACML策略使用相同的属性。