如何在FIWARE中实现安全级别3?

时间:2017-07-05 03:55:35

标签: security authorization access-control fiware xacml

我正在计算机中部署FIWARE安全GE(即Wilma,AuthzForce,Keyrock)。安全级别2(基本授权)运行良好,但现在我需要使用XACML的安全级别3(高级授权)。

长话短说,我想要一个实现安全级别3的教程。但是,据我所知,任何关于安全级别3的教程或文档都不存在。

目前,我使用PAP的API创建我的策略,并将config.js中的'custom_policy'选项从'undefined'更改为'policy.js'。然后我将'policy.js'文件创建为'PEP / policies',但与模板文件相比,不要更改任何内容,因为我不知道这段代码到底是做什么的。我想我应该使用'xml'变量来制作XACML Request表单。但在我的情况下,PEP在使用'xml'变量生成XACML请求时给出了错误,并返回此变量。这是我的PEP错误:

Error: Root - Error in AZF communication <?xml version="1.0" encoding="UTF-8" standalone="yes"?><error xmlns="http://authzforce.github.io/rest-api-model/xmlns/authz/S" xmlns:ns2="http://www.w3.org/2005/Atom" xmlns:ns3="http://authzforce.github.io/core/xmlns/pdp/5.0" xmlns:ns4="http://authzforce.github.io/pap-dao-flat-file/xmlns/properties/3.6"><message>Invalid parameters: cvc-elt.1: Cannot find the declaration of element 'Request'.</message></error>

这是policy.js中的'getPolicy'代码(XACML请求)。我只是非常简单地要求回复是否允许,因为我不确定那时我在做什么。:

exports.getPolicy = function (roles, req, app_id) {
    var xml = xmlBuilder.create('Request', {
            'xmlns': 'urn:oasis:names:tc:xacml:3.0:core:schema:wd-17',
            'CombinedDecision': 'false',
            'ReturnPolicyIdList': 'false'})
    .ele('Attributes', {
            'Category': 'urn:oasis:names:tc:xacml:1.0:subject-category:access-subject'});

那么,任何人都可以向我提供有关安全级别3实施的任何信息吗?

2 个答案:

答案 0 :(得分:3)

升级到Wilma 6.2(错误修复)。

重用已知有效的lib/azf.js代码,并根据需要调整请求内容。该变量在那里被错误地称为XACMLPolicy,但不要误会,这是一个实际的XACML Request。这是使用xml2json包将JSON转换为XML,而在您的代码中,您似乎使用了另一个,xmlbuilder可能?您没有粘贴完整代码 - 此xmlBuilder变量来自何处? - 所以我只是在猜测。

如果你确实在使用xmlbuilder包并希望坚持使用它,我注意到在example using namespaces中,xmlns属性以不同的方式放置:

var xmlBuilder = require('xmlbuilder');

var xml = xmlBuilder.create('Request', { encoding: 'utf-8' })
.att('xmlns', 'urn:oasis:names:tc:xacml:3.0:core:schema:wd-17')
.att('CombinedDecision': 'false')
.att('ReturnPolicyIdList': 'false')
.ele('Attributes', {'Category': 'urn:oasis:names:tc:xacml:1.0:subject-category:access-subject'});

也许这会产生影响,我没有检查。

也可以随时在Wilma's github上创建问题以获取开发团队的帮助。 (我不是其中之一,但我们一起合作进行AuthzForce集成。)

答案 1 :(得分:0)

你得到的错误确实是

  

参数无效:cvc-elt.1:找不到元素的声明   &#39;请求&#39;

这是一个简单的XML验证问题。您需要确保发送的XACML请求包含正确的名称空间声明。

您会看到关于此主题的另一个问题here

您可以粘贴XACML请求,以便我们判断它是否有效吗?