0

我正在学习 XACML 3.0 并想问一下,如果我有两个具有不同 ID 但属于同一类别的属性,即(Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource"),这个解释为同一类别的两个不同属性或具有单个属性的两个单独请求。

谢谢你 。

4

2 回答 2

0

如果您创建一个具有 4 个不同类别(例如主题、操作、资源和环境)的 XACML 请求,并且您为每个类别添加一个或多个属性,那么您将始终获得一个请求,从而获得一个响应。

例子:

<xacml-ctx:Request ReturnPolicyIdList="true" CombinedDecision="false" xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" >
      <xacml-ctx:Attribute AttributeId="action-id" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">view</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" >
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
      <xacml-ctx:Attribute AttributeId="resource-type" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">medical record</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
      <xacml-ctx:Attribute AttributeId="resource-id" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">doc#123</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" >
      <xacml-ctx:Attribute AttributeId="user.role" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">manager</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
      <xacml-ctx:Attribute AttributeId="user.identifier" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Alice</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
</xacml-ctx:Request>

前述的 XACML 请求是指

经理 Alice 可以查看病历 doc#123 吗?

如果您创建一个 XACML 请求,其中您多次重复一个类别,那么您正在构建一个多决策请求。例如我们可以问

经理 Alice 可以查看和编辑病历 doc#123 吗?

在 XACML 中,这将变为:

<xacml-ctx:Request ReturnPolicyIdList="true" CombinedDecision="false" xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" >
      <xacml-ctx:Attribute AttributeId="action-id" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">view</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
      <xacml-ctx:Attribute AttributeId="resource-type" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">medical record</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
      <xacml-ctx:Attribute AttributeId="resource-id" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">doc#123</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" >
      <xacml-ctx:Attribute AttributeId="user.role" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">manager</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
      <xacml-ctx:Attribute AttributeId="user.identifier" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Alice</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" >
      <xacml-ctx:Attribute AttributeId="action-id" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">edit</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" >
   </xacml-ctx:Attributes>
</xacml-ctx:Request>

请注意,类别的顺序无关紧要。您还可以为您的类别提供 XML 标识符并通过引用创建 XACML 多决策请求,但这并不常用。

您将在此处找到有关该主题和 Axiomatics SDK 的有趣文章。

于 2015-11-23T12:30:13.603 回答
0

看来我的回答是错误的。但是,我将把它留在这里,因为它讨论了多个决策请求的相关问题。

XACML 3.0 多决策配置文件对此非常清楚:

这样的请求上下文应被解释为访问各个元素中指定的所有情况的请求。每个元素应代表一个单独的资源、主题或另一个类别,除非该元素利用本概要中描述的其他机制。对于重复元素的每个组合,应创建一个单独的决策请求。此单独请求应与原始请求上下文相同,但有一个例外:每个重复类别中仅应存在一个元素。如果此类元素包含具有“立即”以外的任何值的“范围”属性,则应根据第 5 节中指定的处理模型进一步处理个人请求。
此处理可能涉及在 PDP 评估之前将一个个人决策请求分解为其他个人决策请求

因此,我们的请求被解释为两个不同的请求,每个请求都有一个来自您提到的类别的属性。当然,这是假设您的 PDP 确实实施了多决策配置文件。

于 2015-11-23T05:12:08.353 回答