2014-01-09 49 views

回答

2

XACML請求與存儲在PDP策略存儲中的策略的「目標」元素相匹配。一旦目標元素與策略相匹配,就根據策略順序評估那些匹配的策略(適用的策略)(策略的規則),並根據策略存儲的策略組合算法來結合結果。如果PEP想知道的話;什麼PEP策略匹配給定的XACML請求,PEP可以發送帶有「ReturnPolicyIdList」屬性的XACML請求爲「true」。

<Request xmlns="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17" CombinedDecision="false" ReturnPolicyIdList="true"> 

然後,XACML響應將返回XACML響應中匹配的策略。

+0

所以這是PDP的責任,以匹配目標元素並結合匹配的策略結果。但我不確定你是如何在Balana樣本中做這件事的。您如何在PDP中加載策略以匹配。 Balana XACML 3.0中的PIP實現在哪裏? – Utsav

+0

這是一個可以實現的擴展點。 Balana默認實現爲基於文件的策略存儲。在此實現中,它將匹配文件存儲中的所有策略與請求中的請求,並將適用的策略(作爲策略集)返回到Balana引擎。請在這裏找到jave代碼http://svn.wso2.org/repos/wso2/trunk/commons/balana/modules/balana-core/src/main/java/org/wso2/balana/finder/impl/FileBasedPolicyFinderModule。 java – Asela

+0

所以你的意思是說PIP是當前實現Balana的PDP本身的一部分。因此,在您提供的當前示例中,我們直接從文件系統的資源文件夾加載所有策略。 – Utsav

0

除了Asela的回答,我想補充一點,「策略存儲」是特定於實現的。

Asela描述它的方式本質上意味着策略存儲採用組合算法而不是目標來執行策略集。

+0

XACML請求只包含主題,資源和操作值,並且策略將包含基於該PDP的Target元素將自動評估,但如果我將在每個策略中定義相同的目標元素,會發生什麼情況。 – Utsav

+1

如果您具有相同的目標元素,則所有策略都將適用於該請求。比他們所有人都會被評估。策略庫中的所有策略都將作爲一個策略集。 – Asela

+0

所以如果所有的政策都被評估,那麼這是非常複雜的,因爲如果我有100個或更多的政策匹配,它會消耗更多的時間來匹配,這將產生性能問題,如果我錯了,不知道糾正我。 – Utsav

0

添加我使用WSO2的Identity Server作爲PDP

所以,你可以在IS添加多個策略文件的經驗。但是你必須給每個策略文件分級。

所以我認爲,這些政策是按照我們提供的排名順序進行驗證的,並且對於目標元素首先匹配的任何策略,都會首先進行評估。