Balana和WSO2 Identity Server提供不同的结果

时间:2013-08-01 23:31:48

标签: wso2 xacml wso2is xacml3

我有一个策略,当我在WSO2 Identity Server中运行请求时,我会按预期获得许可决定。但是,当我从:

创建另一个样本策略时
  

http://svn.wso2.org/repos/wso2/carbon/platform/tags/4.0.7/products/is/4.1.0/modules/distribution/conf/policies/sample-kmarket-sliver-policy.xml

再次发送同样的请求,我得到以下错误:

<Response xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
   <Result>
      <Decision>Indeterminate</Decision>
      <Status>
        <StatusCode Value="urn:oasis:names:tc:xacml:1.0:status:missing-attribute"/>
        <StatusMessage>Couldn't find AttributeDesignator attribute</StatusMessage>
        <StatusDetail>
          <MissingAttributeDetail AttributeId="http://kmarket.com/id/role" DataType="http://www.w3.org/2001/XMLSchema#string" Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" ></MissingAttributeDetail>
        </StatusDetail>
      </Status>
   </Result>
</Response>

出于某种原因,正在针对此示例策略而不是原始策略运行请求。现在有趣的是我下载了Balana(WSO2身份服务器使用的XACML引擎)源代码,并使用策略和我的请求运行测试,我按预期获得Permit。但是,当我在WSO2中做同样的事情时,它不起作用,我得到不确定的错误。我尝试了“尝试”功能和“使用PDP评估”,结果相同。

以下是我使用的请求,为什么这是通过WSO2而不是Balana应用于示例策略而不是我的原始策略?

<Request xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" CombinedDecision="false" ReturnPolicyIdList="false">
    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action">
        <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:action:action-id" IncludeInResult="false">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">write</AttributeValue>
        </Attribute>
    </Attributes>

    <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject">
        <Attribute AttributeId="urn:samhsa:names:tc:company:1.0:subject:provider-npi" IncludeInResult="false">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1548797430</AttributeValue>
        </Attribute>
    </Attributes>

    <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:recipient-subject">
        <Attribute AttributeId="urn:samhsa:names:tc:company:1.0:subject:provider-npi" IncludeInResult="false">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">1347570297</AttributeValue>
        </Attribute>
    </Attributes>

    <Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:purpose-of-use">
        <Attribute AttributeId="urn:samhsa:names:tc:company:1.0:purpose-of-use-code" IncludeInResult="false">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">TREAT</AttributeValue>
        </Attribute>
    </Attributes>

    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource">
        <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:resource:resource-id" IncludeInResult="false">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">@outlook.com</AttributeValue>
        </Attribute>
    </Attributes>

    <Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment">
        <Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:environment:current-dateTime" IncludeInResult="false">
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#dateTime">2013-07-12T00:00:00-04:00</AttributeValue>
        </Attribute>
    </Attributes>

</Request>

1 个答案:

答案 0 :(得分:0)

根据错误,似乎没有配置属性查找器。我猜政策有一个名为“http://kmarket.com/id/role”的属性ID,但它不在请求中,因此调用属性查找器。你需要注册一个属性查找器来支持它...请从这里找到样本属性查找器[1]。在balana示例中,此属性查找器已经存在样本本身

[1] http://svn.wso2.org/repos/wso2/carbon/platform/tags/4.0.7/components/identity/org.wso2.carbon.identity.samples.entitlement.pip/