Java XACML响应不适用
您好,我正在使用XACML3进行实验,我发现当请求符合条件时,我会得到允许的响应。但当它不适用时,我得到的不是否定而是不适用。我不确定这种行为是否正确。 我知道我可以用Java XACML响应不适用,java,xacml,xacml3,Java,Xacml,Xacml3,您好,我正在使用XACML3进行实验,我发现当请求符合条件时,我会得到允许的响应。但当它不适用时,我得到的不是否定而是不适用。我不确定这种行为是否正确。 我知道我可以用拒绝来掩盖不适用的响应,除非允许组合算法,但我不理解这种行为 以下是我的政策 <?xml version="1.0" encoding="UTF-8" standalone="no"?> <Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
拒绝来掩盖不适用的响应,除非允许组合算法,但我不理解这种行为
以下是我的政策
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<Policy xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" PolicyId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIA1:policy"
RuleCombiningAlgId="urn:oasis:names:tc:xacml:3.0:rule-combining-algorithm:deny-overrides"
Version="1.0">
<Target>
<AnyOf>
<AllOf>
<Match MatchId="urn:oasis:names:tc:xacml:1.0:function:string-equal">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">MyApp</AttributeValue>
<AttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id"
DataType="http://www.w3.org/2001/XMLSchema#string"
Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"
MustBePresent="true" />
</Match>
</AllOf>
</AnyOf>
</Target>
<Rule Effect="Permit"
RuleId="urn:oasis:names:tc:xacml:2.0:conformance-test:IIA1:rule">
<Target />
<Condition>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-equal">
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only">
<AttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:age"
Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
DataType="http://www.w3.org/2001/XMLSchema#integer" MustBePresent="false" />
</Apply>
<Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:integer-one-and-only">
<AttributeDesignator
AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:age2"
Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
DataType="http://www.w3.org/2001/XMLSchema#integer" MustBePresent="false" />
</Apply>
</Apply>
</Condition>
</Rule>
</Policy>
MyApp
这是我的请求,我得到的答复是不适用的
<?xml version="1.0" encoding="utf-8"?>
<Request ReturnPolicyIdList="false" CombinedDecision="false" xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:age">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">45</AttributeValue>
</Attribute>
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:2.0:conformance-test:age2">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#integer">4</AttributeValue>
</Attribute>
</Attributes>
<Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
<Attribute IncludeInResult="false" AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id">
<AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">MyApp</AttributeValue>
</Attribute>
</Attributes>
</Request>
45
4.
MyApp
只有当年龄和年龄2匹配时,我才能得到允许的响应,否则响应不适用。不适用意味着未找到匹配规则,但目标确实与资源id
字符串成功匹配,那么为什么响应不适用?感谢您的帮助。不适用是正常的反应。事实上,这很可能是最常见的反应
XACML在响应中定义了4种可能的决策:
- 许可证
- 否认
- 不适用
- 不确定(我相信你以前见过。看这个)
当第一次编写策略时,很容易点击notapplicatable,因为它本质上意味着您的请求与策略不匹配。假设您的政策是关于银行账户的,您发送了一个关于健康记录的请求。你不适用
有一些方法可以掩盖不适用的文件,并强制PDP返回许可或拒绝。其中一种方法是使用以下任一组合算法:
- 除非拒绝,否则允许
- 除非允许,否则拒绝
如果您的策略包含3条规则,但均不适用,则该策略通常会返回NOTAPPLIABLE。使用前面两种组合算法中的一种,您将获得许可或拒绝
另一种选择是使用另一条规则作为“一网打尽”,它将拒绝以前未处理过的任何访问。在这种情况下,需要首先应用父级的合并算法。见下文
目标还是条件?
在XACML中,有两个关键元素可用于定义授权策略的范围(广义上):
- 目标元素:目标可以存在于策略集、策略和规则中。将它们用于与和/或/和相结合的简单匹配逻辑,例如
角色==“经理”和年龄>18岁
- 条件元素:条件仅存在于规则元素中。它们可以用于更高级的匹配,特别是比较两个属性,例如
age>ageLimit
。不能在目标中执行后一种操作
要使规则适用,目标和条件(如果有)都必须计算为true。谢谢David,这是一个有用的信息。我想知道Target在这里的角色是什么?我的理解是,目标将检查规则/策略是否适用于其评估,条件将使用各种规则进行实际评估。如果是这种情况,为什么即使目标匹配成功,我也会得到不适用的结果。请参阅更新的响应。别忘了接受答案并投票,谢谢!请查看我们的Aximatics博客了解更多信息