Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java XACML响应不适用_Java_Xacml_Xacml3 - Fatal编程技术网

Java XACML响应不适用

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"

您好,我正在使用XACML3进行实验,我发现当请求符合条件时,我会得到允许的响应。但当它不适用时,我得到的不是否定而是不适用。我不确定这种行为是否正确。 我知道我可以用
拒绝来掩盖不适用的响应,除非允许组合算法,但我不理解这种行为

以下是我的政策

<?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博客了解更多信息