2013-08-01 59 views
0

我有一個策略,當我在WSO2身份服務器中運行一個請求時,我得到了預期的許可決定。但是,當我從創建另一個示例策略:Balana和WSO2身份服務器給出了不同的結果

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 Identity Server使用的XACML引擎)源代碼,並運行了包含策略和我的請求的測試,並且我按預期獲得了許可證。但是,當我在WSO2中執行相同的操作時,它不能正常工作,並且我得到了不確定的錯誤。我嘗試了「試用」功能和「用PDP評估」,結果相同。

這是我用過的要求,爲什麼這是通過WSO2而不是我的原始政策通過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> 

回答

0

根據錯誤,似乎屬性查找器沒有配置。我猜政策有一個屬性ID,名爲「http://kmarket.com/id/role」但它不在請求中,所以調用屬性查找程序。你需要註冊一個屬性查找器來支持它...請從這裏找到示例屬性查找器[1]。在balana樣品,這個屬性Finder也已經在那裏與樣品本身

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

+0

那麼,我需要註冊一個id屬性?以及如何從WSO2 Identity Server管理控制檯註冊它? – TastyCode

+0

現在無法從管理控制檯執行此操作..您需要編寫PIP模塊並將其插入。請檢查示例PIP http://svn.wso2.org/repos/wso2/carbon/platform/tags/ 4.0.7 /組件/同一性/ org.wso2.carbon.identity.samples.entitlement.pip / – Asela