gpt4 book ai didi

java - XACML 响应不适用

转载 作者:行者123 更新时间:2023-11-30 06:19:27 24 4
gpt4 key购买 nike

您好,我正在尝试 XACML3,我发现请求与条件匹配,我得到的响应为“许可”。但如果不适用,我会得到“不适用”而不是“拒绝”。我不确定这种行为是否正确。我确实知道我可以使用 deny-unless-permit 组合算法屏蔽“不适用”响应,但我不理解这种行为。

以下是我的政策

<?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>

这是我的请求,但我得到的答复是不适用

<?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>

仅当年龄和年龄 2 匹配时,我才会收到“允许”的响应,否则响应不适用。不适用意味着未找到匹配规则,但目标确实与 resource-id 字符串成功匹配,那么为什么响应不适用?如有任何帮助,我们将不胜感激。

最佳答案

出现 NotApplicable 是正常 react 。事实上,这很可能是最常见的 react 。

XACML 在响应中定义了 4 个可能的决策:

  • 许可
  • 拒绝
  • 不适用
  • 不确定(我相信您以前见过。请参阅此 post)

首次编写政策时,很容易遇到“NotApplicable”,因为这本质上意味着您的请求与政策不匹配。想象一下,您的保单与银行账户有关,并且您发送了有关健康记录的请求。您会得到 NotApplicable。

有多种方法可以屏蔽 NotApplicable 并强制 PDP 返回 Permit 或 Deny。其中一种方法是使用以下组合算法之一:

  • 允许除非拒绝
  • 拒绝,除非允许

如果您的政策包含 3 条规则,但没有一条适用,则该政策通常会返回 NotApplicable。使用之前的 2 种组合算法之一,您将获得允许或拒绝。

另一个选择是使用另一个规则作为包罗万象的规则,该规则将拒绝任何先前未处理的访问。在这种情况下,父级的组合算法需要首先适用。见下文。

Using a catch-all rule

目标或条件?

在 XACML 中,您可以使用 2 个关键元素来定义授权策略的范围(广义上):

  • Target 元素:目标可以存在于 PolicySet、Policy 和 Rule 中。将它们用于与 and/or/and 结合的简单匹配逻辑,例如角色==“经理”,年龄>18
  • Condition 元素:条件仅存在于 Rule 元素内。它们可用于更高级的匹配,特别是比较 2 个属性,例如年龄>年龄限制。您不能在 Target 中执行后者。

要使规则适用,目标和条件(如果有)都必须评估为 true。

关于java - XACML 响应不适用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48498090/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com