2017-07-05 5 views
2

Je déploie des GE de sécurité FIWARE (c'est-à-dire, Wilma, AuthzForce, Keyrock) dans mon ordinateur. Le niveau de sécurité 2 (autorisation de base) fonctionne bien, mais maintenant j'ai besoin du niveau de sécurité 3 (autorisation avancée) en utilisant XACML. En bref, je veux un tutoriel de niveau de sécurité d'implémentation 3. Cependant, pour autant que je sache, aucun tutoriel ou document sur le niveau de sécurité 3 n'existe.Comment atteindre le niveau de sécurité 3 dans FIWARE?

Pour l'instant, je crée ma politique avec l'API de PAP, et change l'option 'custom_policy' dans config.js de 'undefined' à 'policy.js'. Et puis je crée le fichier 'policy.js' dans 'PEP/policies', mais ne change rien par rapport à son fichier modèle parce que je ne sais pas ce que fait exactement ce code. Je pense que je devrais faire le formulaire XACML Request en utilisant la variable 'xml'. Mais dans mon cas, PEP me donne l'erreur quand je fais la requête XACML en utilisant la variable 'xml', et retourne cette variable. Voici mon erreur de 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> 

Et voici mon code 'getPolicy' (Demande XACML) dans policy.js. Je viens de faire la demande très simple si la réponse est permis ou non parce que je ne suis pas sûr de ce que je fais à ce moment-là .:

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'}); 

Alors, quelqu'un peut me donner des informations sur la mise en œuvre du niveau de sécurité 3?

+0

Quelle version de Wilma utilisez-vous? – cdan

+0

Keyrock est 5.4.1, Wilma est 5.4 et AuthzForce est 5.4.1 maintenant. – weepi

Répondre

3

Réutiliser le code de lib/azf.js qui est connu pour fonctionner et adapter le contenu de la demande à vos besoins. La variable est appelée à tort XACMLPolicy ici, mais ne vous y trompez pas, il s'agit d'une XACML réelle Request. C'est en utilisant xml2json package pour convertir le JSON en XML, alors que dans votre code, vous semblez utiliser un autre, xmlbuilder peut-être? Vous n'avez pas copié le code complet - d'où vient cette variable xmlBuilder? - Je ne fais que deviner.

Si vous êtes en effet utilisez xmlbuilder package et que vous voulez rester avec elle, je remarque que dans le example using namespaces, l'attribut xmlns est mis d'une manière différente:

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'}); 

Peut-être que cela fait une différence, je n ne vérifie pas.

De même, n'hésitez pas à créer un problème avec votre question sur Wilma's github pour obtenir de l'aide de la part de l'équipe de développement. (Je ne suis pas l'un d'entre eux mais nous avons travaillé ensemble pour l'intégration d'AuthzForce.)

+0

Wow, Merci pour votre réponse. Je vais essayer ça plus tard. Et j'ai une autre question. Il y a une section XACML quand je crée une permission dans Keyrock (en dessous de la section verbe + chemin), qu'est-ce que c'est? J'ai besoin d'écrire quelque chose dans la section pour atteindre le niveau 3? – weepi

+0

Le titre de la section est-il uniquement "XACML" ou "Règle XACML"? Cela devrait être où vous pouvez écrire une règle XACML manuellement (sans trucs xmlns), par exemple. ' ...'. Il sera combiné avec les autres autorisations. Chaque forme verbe + chemin est convertie en une règle XACML (voir [templates de conversion] (https://github.com/ging/horizon/tree/master/openstack_dashboard/templates/access_control)). – cdan

+0

À la fin, vous obtenez une règle XACML par permission, une par rôle (en combinant toutes ces règles); et un pour l'application (en combinant tous les s); et ce PolicySet est la pièce envoyée à AuthzForce. – cdan

0

L'erreur que vous obtenez est vraiment

Paramètres incorrects: cvc-elt.1: Vous ne trouvez pas la déclaration de l'élément « demande ».

Ceci est un problème de validation XML simple. Vous devez vous assurer que la requête XACML que vous envoyez contient la bonne déclaration d'espace de nom.

Vous verrez qu'il y a une autre question à ce sujet here. Pouvez-vous coller votre demande XACML afin que nous puissions dire si elle est valide?

Mise à niveau vers Wilma 6.2 (correction de bogues)

+0

Merci pour votre réponse. J'ai édité mon contenu, et je vais vérifier vos conseils. – weepi