[英]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
}
}
對象RequestType
, AttributesType
和其他對象是XACML上下文的一部分。
這是上下文處理程序類的正確方法,還是我完全錯過了上下文處理程序的要點?
非常感謝!
我認為上下文處理程序是PDP的一部分。 PEP截取SOAP調用,提取參數值,使用這些值構成標准化的請求,然后將請求發送到PDP。 PDP從該請求中提取參數值,通過查詢一些PIP查找其他值,將請求與其策略進行匹配以做出決策,然后組成標准響應,並將其發送回PEP。
在完整的XACML 2.0 / 3.0實現中,所有授權過程的真正中心節點或瓶頸是上下文處理程序組件,既不是PEP也不是PDP。 官方文檔中建議的數據流清楚地表明了這一點。
因此,我認為第一個問題是“ 為了簡單起見,將Context Handler組件粘貼在另一個組件中是一種好方法嗎? ”是的。 然后“ 如果是,最好的地方是PEP或PDP? ”好吧,它認為這取決於您自己的實際情況。
在一般的簡單情況下,例如,當您不需要PIP時,我建議像您一樣將Context Handler粘貼在PEP域中。 這有很多原因:
在更復雜的情況下,您的授權請求可能不包含PDP做出決定所需的所有信息。 在這種情況下,PDP將需要向上下文處理程序詢問這些信息,並且上下文處理程序必須能夠訪問PIP組件以檢索那些用戶資源環境值。 因為PIP 通常訪問集中式資源,所以它通常是集中式服務。 PDP還通常是一個集中式的服務,所以平時 PDP和PIP是在同一個域中。
在這種情況下,您可能會想將上下文處理程序粘貼到PDP組件中。 但是,如果這樣做,您將需要處理其他問題,因為在簡單的情況下,您失去了去耦和上面列出的所有功能。 此外,按照XACML規范,我希望標准PDP能夠通過XACML消息進行對話,但是,如果直接將Context Handler放在此處,則PDP確實會開始使用PEP本地語言。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.