我正在评估 PDP 引擎,目前我尝试使用 AuthzForce Core。到目前为止,通过 PDP 评估请求运行得非常可靠:
//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!
}
}
}
现在,根据[1]之类的文献,我不应该信任给定 request-xacml 文件中的属性。只要有可能,我必须检查属性提供者(例如患者数据库)是否给定属性(例如患者出生日期)实际上属于患者以防止攻击。
否则,攻击者可以使请求中的患者更年轻,以便以父母监护人的身份访问患者的记录。
问题
- 根据属性提供者检查请求是 PDP 还是其他实体的任务?
- OASIS 是否具体说明了该问题?例如配置文件的工作流程或语法
- 有没有办法让我的 pdp 引擎知道属性提供者?
- 我之前应该自己检查提供的请求
Response response = pdp.evaluate((Request) request);
吗?