0

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

4

2 回答 2

1

规范说 resource-id SHELL 是 anyURI。所以理论上你可以使用字符串数据类型。那么函数将是字符串相等的。

同时,在大多数情况下,您可以毫无问题地使用 anyURI。例如,字符串“Alice”是 anyURI。

或者,您可以引入另一个属性,只需适当地命名它并使用而不是 resource-id。

于 2013-05-22T10:44:57.273 回答
0

除了 Mike 所说的之外,您始终可以创建一个具有完全相同 id、类别(如果在 XACML 3.0 中)和可选的颁发者的新属性,但将数据类型从 anyURI 更改为字符串:

      <ResourceAttributeDesignator
          AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" 
          DataType="http://www.w3.org/2001/XMLSchema#string"/>

只需确保您的 XACML 请求和 XACML 策略使用相同的属性。

于 2013-05-23T12:53:38.593 回答