簡體   English   中英

XACML PEP如何與上下文交互?

[英]How does a XACML PEP interact with a context?

我的問題與XACML上下文處理程序的作用和目的有關。 如果我正確理解OASIS XACML3.0規范,則PEP會從客戶端應用程序攔截對某些資源或訪問的請求,然后使用上下文處理程序創建適合PDP處理的本機XACML上下文對象。 在我的設計中,我將上下文處理程序作為具有用於創建請求對象和解析xml結果的方法的全局類。 我設想班級看起來像這樣:

public static class ContextHandler
{
    public static bool CreatePolicy(PolicyType policyName)
    {
        // Serialize PolicyType to xml document

    }

    public static PolicyType LoadPolicy(string policyName)
    {
        // 1. Load policy from db, filesystem...
        // 2. Hydrate/deserialize into XACML policy object
        // 3. Return PolicyType object
    }

    public static RequestType BuildRequest(
        Dictionary<string, string> subjects,
        Dictionary<string, string> resources,
        Dictionary<string, string> actions,
        Dictionary<string, string> environment)
    {            
        // 1. Create AttributesType collection, populate with subjects, resource...
        // 2. Populate RequestType object
        // 3. Return Request

    }
}

對象RequestTypeAttributesType和其他對象是XACML上下文的一部分。

這是上下文處理程序類的正確方法,還是我完全錯過了上下文處理程序的要點?

非常感謝!

我認為上下文處理程序是PDP的一部分。 PEP截取SOAP調用,提取參數值,使用這些值構成標准化的請求,然后將請求發送到PDP。 PDP從該請求中提取參數值,通過查詢一些PIP查找其他值,將請求與其策略進行匹配以做出決策,然后組成標准響應,並將其發送回PEP。

在完整的XACML 2.0 / 3.0實現中,所有授權過程的真正中心節點或瓶頸是上下文處理程序組件,既不是PEP也不是PDP。 官方文檔中建議的數據流清楚地表明了這一點。

因此,我認為第一個問題是“ 為了簡單起見,將Context Handler組件粘貼在另一個組件中是一種好方法嗎? ”是的。 然后“ 如果是,最好的地方是PEP或PDP? ”好吧,它認為這取決於您自己的實際情況。

在一般的簡單情況下,例如,當您不需要PIP時,我建議像您一樣將Context Handler粘貼在PEP域中。 這有很多原因:

  • 您可能有很多PEP,而不僅僅是一個,因此您應該在PEP和PDP之間實現解耦
  • 每個PEP都知道自己的特定授權請求規范,因此能夠將本機請求轉換為標准XACML請求,反之亦然
  • 您可以獲得不受特定PEP邏輯,不受PEP依賴項(即第三方庫),不受PEP代碼管理(即,更改授權請求規范,錯誤修復,新部署等)影響的中央和標准PDP。

在更復雜的情況下,您的授權請求可能不包含PDP做出決定所需的所有信息。 在這種情況下,PDP將需要向上下文處理程序詢問這些信息,並且上下文處理程序必須能夠訪問PIP組件以檢索那些用戶資源環境值。 因為PIP 通常訪問集中式資源,所以它通常是集中式服務。 PDP還通常是一個集中式的服務,所以平時 PDP和PIP是在同一個域中。

在這種情況下,您可能會想將上下文處理程序粘貼到PDP組件中。 但是,如果這樣做,您將需要處理其他問題,因為在簡單的情況下,您失去了去耦和上面列出的所有功能。 此外,按照XACML規范,我希望標准PDP能夠通過XACML消息進行對話,但是,如果直接將Context Handler放在此處,則PDP確實會開始使用PEP本地語言。

是。 我也希望上下文處理程序成為PDP的一部分。 PEP可以與您的應用程序一起使用,在其中攔截您的請求並向PDP詢問授權決定。 您可以找到開源XACML 3.0。 WSO2 Identity Server將其作為XACML引擎從此處使用,稱為“巴拉納”的實現(對sun-xacml的改進)。 從其源代碼中,您可以找到詳細說明上下文處理程序實現的ctx類。 另外,此博客還將幫助您了解XACML 3.0的新功能。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM