Java 使用MongoDB for Authzforce在JSON中存储XACML文件

Java 使用MongoDB for Authzforce在JSON中存储XACML文件,java,json,mongodb,xacml3,authzforce,Java,Json,Mongodb,Xacml3,Authzforce,我想使用authzforce ce core PDP引擎jar文件实现一个PDP引擎,就像您在自述文件中提到的那样,但XML中的策略文件除外,它应该是动态的。其主要思想类似于文件共享系统,因为一个用户可以将多个文件共享给其他用户,每个文件可能具有不同的策略。我正在考虑将策略文件存储在某种数据库中,比如MySQL或MongoDB,PDP将引用它,并根据请求决定授予或拒绝访问 我发现pdp核心引擎支持前面提到的MongoDB 以下是我的pdp配置文件: <?xml version="1.0"

我想使用authzforce ce core PDP引擎jar文件实现一个PDP引擎,就像您在自述文件中提到的那样,但XML中的策略文件除外,它应该是动态的。其主要思想类似于文件共享系统,因为一个用户可以将多个文件共享给其他用户,每个文件可能具有不同的策略。我正在考虑将策略文件存储在某种数据库中,比如MySQL或MongoDB,PDP将引用它,并根据请求决定授予或拒绝访问

我发现pdp核心引擎支持前面提到的MongoDB

以下是我的pdp配置文件:

<?xml version="1.0" encoding="UTF-8"?>
<!-- Testing parameter 'maxPolicySetRefDepth' -->
<pdp xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://authzforce.github.io/core/xmlns/pdp/6.0" xmlns:ext="http://authzforce.github.io/core/xmlns/test/3" version="6.0.0">
   <refPolicyProvider id="refPolicyProvider" xsi:type="ext:MongoDBBasedPolicyProvider" serverHost="localhost" serverPort="27017" dbName="testXACML" collectionName="policies" />
   <rootPolicyProvider id="rootPolicyProvider" xsi:type="StaticRefBasedRootPolicyProvider">
      <policyRef>root-rbac-policyset</policyRef>
   </rootPolicyProvider>
</pdp>

但当我尝试将其转换回XML时,它会变成完全不同的XML文件。那么现在如何在MongoDB中存储XML文件呢?另外,如何确保pdp引擎核心能够找到要比较的正确策略?我在README like中看到了一个关于json适配器的例子,但我不确定如何正常实现它。

目前没有用于XACML策略的json格式。OASIS XACML技术委员会目前正在考虑这个问题。沃特福德理工学院的伯纳德·巴特勒(Bernard Butler)做了一些初步翻译,可能对你有价值

目前我唯一能想到的另一个选择是围绕策略创建JSON包装,例如

{
    "policy":"the xml policy contents escaped as valid json value or in base64"
}

我回答了这个问题。简而言之,David在格式(存储为JSON字符串的xml内容)方面基本上是正确的。更准确地说,对于AuthzForce MongoDB策略提供程序,您必须存储策略,如的
setupBeforeClass
方法中用测试策略填充数据库的部分所示。您将看到,我们使用Jongo库(在幕后使用Jackson对象映射)将
PolicyPOJO
Java对象映射到Mongodb集合中的JSON。因此,从这个类中,您可以大致猜测JSON中策略的存储格式:它是一个JSON对象,具有以下字段(键值对):

  • “id”(字符串):策略(集合)id
  • “版本”(字符串):策略(设置)版本
  • “type”(字符串):XACML3.0策略(resp.PolicySet)的策略(Set)类型,即{urn:oasis:names:tc:xacml:3.0:core:schema:wd-17}Policy'(resp.{urn:oasis:names:tc:xacml:3.0:core:schema:wd-17}PolicySet)
  • “内容”(字符串):实际策略(集合)的XML文档为字符串(纯文本)

Java库(Jongo/Jackson)会自动正确转义xml内容,以适合JSON字符串。但是如果您使用其他库/语言,请确保情况也是如此。

您能接受答案吗?
{
    "policy":"the xml policy contents escaped as valid json value or in base64"
}