XACML-<Target> 元素的结构与相关的评估
本文由@呆代待殆原创,转载请注明出处。
一、<Target>元素的结构
<Target>元素标识的父元素被用于评估决定请求。<Target>元素即可以做为<PolicySet>和<Policy>的子元素也可以做为<Rule>的子元素。
Target元素包含一个或多个<Anyof>元素,<Target>元素标准定义如下:
<AnyOf>元素包含一个或者多个<AllOf>元素,<AnyOf>元素的标准定义如下:
<AllOf>元素包含一个或者多个<Match>元素,<AllOf>元素的标准定义如下:
<Match>元素,就是<Target>的最里层了,<Match>元素定义如下:
可以看出,<Match>由MatchId属性、<AttributeValue>元素、<AttributeDesignator>元素、<AttributeSelector>元素组成。
MatchId:这个属性必须是“xs:anyURI”类型,并且要有合法值,定义了一个Match的匹配方法,注意,是方法,不要觉得名字里有Id就把他当成Match的标识。
<AttributeValue>:这个是嵌入的属性值。
<AttributeDesignator>:这个元素类似一个方法,能够用于验证一个或多个属性值,这些属性值来自request上下文的一个<Attributes>元素,会返回一个bag用于MatchId指明的方法。
<AttributeSelector>:这个元素类似一个方法,能够用于验证一个或多个属性值,这些属性值来自请求上下文的一个<Content>元素,会返回一个bag用于MatchId指明的方法。
二、有关于Target的评估
<Match>的返回值由内部的方法决定,(细节这里暂时忽略)返回值有True、False、Indeterminate
Match与AllOf
<AllOf>的返回值有:Match、No Match、Indeterminate
如果<AllOf>里所有的<Match>都返回true,则<AllOf>返回Match
如果没有Fasle 且至少有一个Indeterminate,则<AllOf>返回Indeterminate
如果至少有一个False,则<AllOf>返回NO match
如下表:
AllOf与AnyOf
<AnyOf>的返回值有:Match、No Match、Indeterminate
如果<AnyOf>里面至少有一个<AllOf>返回Match,则<AnyOf>返回Match
如果没有Match且至少有一个Indeterminate,则<AnyOf>返回Indeterminate
如果<AnyOf>里面所有的<AllOf>都返回No match,则<Anyof>返回No Match
如下表:
AnyOf与Target
<Target>的返回值有:Match、No Match、Indeterminate
注意:空Target可以匹配任何请求!!!
如果<Target>里面所有<AnyOf>都返回Match,则<Target>返回Match
如果至少有一个<AnyOf>返回了No Match,则<Target>返回No Match
其他情况都返回,Indeterminate
如下表:
参考资料:
[1] http://docs.oasis-open.org/xacml/3.0/xacml-3.0-core-spec-os-en.html#_Toc325047147