2014-03-31 19 views
1

出於測試目的,我們設置了一個給定的策略,允許具有管理角色的用戶對一個資源執行GET操作。添加/刪除角色是否需要「發佈到PDP」操作才能在wso2中生效?

然後我們使用「PEP TryIt」表單來檢查策略是如何應用於有和沒有Manager角色的用戶,以及在刪除和添加角色之後。我們發現這兩種行爲: 1)PEP TryIt返回許可證,對於給他/她的經理角色刪除的給定用戶 =>意外。 只有在將給定策略發佈到PDP後,系統纔會返回NotApplicable。

2)PEP TryIt,返回NotApplicable的,給定用戶誰得到他/她的經理作用重新分配 =>意外 只有給定策略發佈到PDP後,系統返回許可證。

是否需要將策略發佈到PDP,每次將角色授予/移除給給定的用戶?這是預期的行爲還是應該被視爲一個錯誤?

謝謝! Fermin Ordaz。

回答

0

是..我想你所經歷的正確的行爲.....

碳用戶存儲是既爲PDP的屬性取景器(PIP)。基本上,Carbon用戶商店是默認的PIP實施。在PIP級別中,PDP引入了屬性緩存。簡而言之,我們可以說它緩存了用戶的屬性(這裏是用戶的角色)。您的分配修改,PIP緩存不知道。 (由於用戶存儲和PDP充當兩個獨立的實體),因此它不能使緩存無效。這已經導致了以上的結果。基本上屬性來源(用戶存儲或任何)是獨立於PDP,他們可以分開運行。有兩種方法可以使其失效:

  1. 一旦更新了任何與PIP相關的屬性,您可以使用UI或API清除屬性緩存。在用戶界面中,您可以轉至Entitlement-> PDP->Extension並且有圖標可以清除屬性緩存。這已經通過管理服務公開..因此,您也可以從某些外部應用程序調用此方法。

  2. 您可以停用或減少使用entitlement.properties文件屬性高速緩存的無效值可在<IS_HOME>/repository/conf/security目錄中找到

PDP.AttributeCaching.Enable =真

PDP.AttributeCaching .CachingInterval = 300

此外,對於NotApplicable,我猜你沒有啓用PDP中的策略..一旦您將策略發佈到PDP ..必須啓用它才能將其置於實際運行時間

相關問題