Authorization 在哪里根据PDP上的属性提供程序对XACML请求的属性进行双重检查?
我正在评估PDP引擎,目前我正在尝试。到目前为止,PDP对请求的评估非常可靠:Authorization 在哪里根据PDP上的属性提供程序对XACML请求的属性进行双重检查?,authorization,xacml,abac,pdp,authzforce,Authorization,Xacml,Abac,Pdp,Authzforce,我正在评估PDP引擎,目前我正在尝试。到目前为止,PDP对请求的评估非常可靠: //我的请求和pdp配置文件 文件冲突=新文件(“D:/docs/XACML/AuthZForce/IIA001/pdp.xml”)//xml告诉pdp策略xml文件的位置 File requestFile=新文件(“D:/docs/XACML/AuthZForce/ia001/Request.xml”); //我实例化了pdp引擎和xacml解析器 final PdpEngineConfiguration pdp
//我的请求和pdp配置文件
文件冲突=新文件(“D:/docs/XACML/AuthZForce/IIA001/pdp.xml”)//xml告诉pdp策略xml文件的位置
File requestFile=新文件(“D:/docs/XACML/AuthZForce/ia001/Request.xml”);
//我实例化了pdp引擎和xacml解析器
final PdpEngineConfiguration pdpEngineConf=PdpEngineConfiguration.getInstance(confLocation,null,null);
PdpEngineInoutAdapter pdp=PdpEngineAdapters.newXacmlJaxbInoutAdapter(pdpEngineConf);
XmlUtils.XmlnsFilteringParser xacmlParserFactory=XacmlJaxbParsingUtils.getXacmlParserFactory(false).getInstance();
//我解析请求文件
objectrequest=xacmlParserFactory.parse(requestFile.toURI().toURL());
if(请求实例of request){
//此时,我可以访问所有请求属性或修改它们
//我让PDP评估请求
响应=pdp.评估((请求)请求);
//我检查响应中的结果
for(结果:response.getResults()){
if(result.getDecision()==DecisionType.PERMIT){
//这是允许的!
}否则{
//否认!
}
}
}
现在,根据文献,我不应该信任给定请求xacml文件中的属性。只要有可能,我必须检查属性提供者(例如,患者数据库)是否确实属于患者,以防止攻击
否则,攻击者可能会使患者在请求中变得更年轻,以便访问患者作为家长监护人的记录
问题
Response-Response=pdp.evaluate((请求)请求)之前自己检查提供的请求代码>
PDP.xml
文件)了解属性提供程序。根据要使用的属性提供程序,您还需要另外两个文件(XML目录和模式)。这在中有记录除了@cdan的出色响应之外,这里还有几个要点: 针对属性提供程序检查请求是PDP的任务还是其他实体的任务 PDP始终信任其收到的信息(属性),无论是来自政治公众人物还是来自政治公众人物。因此,PDP无需通过检查PIP来验证其从PEP接收到的值。这会适得其反,效率低下。如果您不能信任政治公众人物发送正确的值,您如何信任它执行正确的决策 绿洲有没有具体说明这个问题?例如,配置文件的工作流或语法 不,我们没有。PIP行为超出了XACML规范的范围 有没有办法让我的pdp引擎知道属性提供者? 我应该在Response-Response=pdp.evaluate((请求)请求)之前自己检查提供的请求吗
PDP应配置PIP。PDP将尽可能使用所有PIP。我想你指的是这份文件:从第一手得到答案总是很好的!谢谢你,卡丹。您所说的非常正确:“更一般地说,这取决于实际的用例,实际上,没有通用的规则。”为了设计合适的实现,我必须了解更多关于PDP的具体实现。T
//My request and pdp configuration files
File confLocation = new File("D:/docs/XACML/AuthZForce/IIA001/pdp.xml");//pdp.xml tells the pdp where the policies xml files are
File requestFile = new File("D:/docs/XACML/AuthZForce/IIA001/Request.xml");
//I instantiate the pdp engine and the xacml parser
final PdpEngineConfiguration pdpEngineConf = PdpEngineConfiguration.getInstance(confLocation, null, null);
PdpEngineInoutAdapter<Request, Response> pdp = PdpEngineAdapters.newXacmlJaxbInoutAdapter(pdpEngineConf);
XmlUtils.XmlnsFilteringParser xacmlParserFactory = XacmlJaxbParsingUtils.getXacmlParserFactory(false).getInstance();
//I parse the request file
Object request = xacmlParserFactory.parse(requestFile.toURI().toURL());
if (request instanceof Request) {
//At this point I could access all request attributes or alter them
//I let the PDP evaluate the request
Response response = pdp.evaluate((Request) request);
//I check the results inside the response
for (Result result : response.getResults()) {
if (result.getDecision() == DecisionType.PERMIT) {
//it's permitted!
} else {
//denied!
}
}
}