将资源类型从anyURI更改为string

时间:2013-05-22 08:57:34

标签: resources policy xacml

我正在使用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数据类型的可能值是什么?

2 个答案:

答案 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策略使用相同的属性。