我正在计算机中部署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实施的任何信息吗?
答案 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请求,以便我们判断它是否有效吗?