如何在 FIWARE 中达到安全级别 3?

How to achieve security level 3 in FIWARE?

我正在我的计算机中部署 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 请求表单。但就我而言,当我使用 'xml' 变量和 return 这个变量发出 XACML 请求时,PEP 给了我错误。这是我的 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 的任何信息吗?

你得到的错误是真的

Invalid parameters: cvc-elt.1: Cannot find the declaration of element 'Request'.

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

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

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

升级到 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 集成工作。)