我的问题与 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 上下文的一部分。
这是上下文处理程序类的正确方法还是我完全错过了上下文处理程序的要点?
非常感谢!