如何在Java中获取XACML Console打印件

时间:2015-07-14 20:47:35

标签: java xacml abac balana

我作为一个令人难以置信的新人工作并致力于制定政策。当然我遇到了问题,通常我会先把一些print.ln语句抛到Java中,然后开始弄清楚代码的位置(或者不是)但是我不知道#39 ;请参阅XACML的OASIS文档中的任何内容以进行打印或调试。

所以,我想知道是否有方法可以做到这一点,或者我是否可以投入一些东西来弄清楚政策/规则评估中某些方面的工作原因或原因

具体问题是我从政策规则中获得许可,它似乎评估了一个" P"与" PI"相同然后返回许可证。

    <Condition>
        <Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of">
            <Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal" />
            <AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">PI</AttributeValue>
            <AttributeDesignator
                AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
                Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
                DataType="http://www.w3.org/2001/XMLSchema#string" MustBePresent="true" />
        </Apply>
    </Condition>

我认为它可能是函数:any-of和字符串相等的函数导致它在这里评估一个真实的条件,但我不确定。我和其他人一起工作,他似乎坚持认为这不是问题,但我没有完整的代码。

但是,如果有一种方法可以进行打印效果很好,特别是因为我想知道在运行不同的算法时我的评估会在哪里进行。

1 个答案:

答案 0 :(得分:1)

您所关注的内容与OASIS XACML规范无关,也与您使用的引擎无关。你必须告诉Balana打印报表/跟踪。 Axiomatics Policy Server为您提供了这样的可能性:您可以模拟评估并获得回溯,向您显示发生的事情,获得​​的结果以及原因。

您的代码段表示如果urn:oasis:names:tc:xacml:1.0:subject:subject-id至少有一个值(因为标志MustBePresent设置为true),它将返回true,并且其中一个值必须等于{{1 }}

例如,如果您有以下政策(与您的政策相同但包含在PIRule内:

ALFA表示法(wikipedia

Policy

XACML 3.0表示法

namespace example{

    import Attributes.*

    policy simpleCondition{
        apply firstApplicable
        rule simpleCondition{
            condition "PI"==subjectId
            permit
        }

    }
}

使用Axiomatics Policy Administration Point(PAP)

测试策略

构建XACML请求以测试您的用例。

清空XACML请求

<?xml version="1.0" encoding="UTF-8"?>
 <!--This file was generated by the ALFA Plugin for Eclipse from Axiomatics AB (http://www.axiomatics.com). 
 Any modification to this file will be lost upon recompilation of the source ALFA file-->
<xacml3:Policy xmlns:xacml3="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"
    PolicyId="http://axiomatics.com/alfa/identifier/example.simpleCondition"
    RuleCombiningAlgId="urn:oasis:names:tc:xacml:1.0:rule-combining-algorithm:first-applicable"
    Version="1.0">
    <xacml3:Description />
    <xacml3:PolicyDefaults>
        <xacml3:XPathVersion>http://www.w3.org/TR/1999/REC-xpath-19991116</xacml3:XPathVersion>
    </xacml3:PolicyDefaults>
    <xacml3:Target />
    <xacml3:Rule 
            Effect="Permit"
            RuleId="http://axiomatics.com/alfa/identifier/example.simpleCondition.simpleCondition">
        <xacml3:Description />
        <xacml3:Target />
        <xacml3:Condition>
            <xacml3:Apply FunctionId="urn:oasis:names:tc:xacml:1.0:function:any-of">
                <xacml3:Function FunctionId="urn:oasis:names:tc:xacml:1.0:function:string-equal"/>
                <xacml3:AttributeValue
                    DataType="http://www.w3.org/2001/XMLSchema#string">PI</xacml3:AttributeValue>
                <xacml3:AttributeDesignator 
                    AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id"
                    DataType="http://www.w3.org/2001/XMLSchema#string"
                    Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject"
                    MustBePresent="false"
                />
            </xacml3:Apply>
        </xacml3:Condition>
    </xacml3:Rule>
</xacml3:Policy>

由于<xacml-ctx:Request ReturnPolicyIdList="true" CombinedDecision="false" xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17"> <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" > </xacml-ctx:Attributes> <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" > </xacml-ctx:Attributes> <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" > </xacml-ctx:Attributes> <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" > </xacml-ctx:Attributes> <xacml-ctx:Attributes Category="http://axiomatics.com/xacml/attribute-category/none" > </xacml-ctx:Attributes> </xacml-ctx:Request> 标记,此请求会导致不确定

具有错误主题ID的XACML请求

MustBePresent

此请求会导致 NotApplicable

具有正确主题ID的XACML请求,PI

<xacml-ctx:Request ReturnPolicyIdList="true" CombinedDecision="false" xmlns:xacml-ctx="urn:oasis:names:tc:xacml:3.0:core:schema:wd-17">
   <xacml-ctx:Attributes Category="http://axiomatics.com/xacml/attribute-category/none" >
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:environment" >
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:resource" >
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:3.0:attribute-category:action" >
   </xacml-ctx:Attributes>
   <xacml-ctx:Attributes Category="urn:oasis:names:tc:xacml:1.0:subject-category:access-subject" >
      <xacml-ctx:Attribute AttributeId="urn:oasis:names:tc:xacml:1.0:subject:subject-id" IncludeInResult="true">
         <xacml-ctx:AttributeValue DataType="http://www.w3.org/2001/XMLSchema#string">Not PI</xacml-ctx:AttributeValue>
      </xacml-ctx:Attribute>
   </xacml-ctx:Attributes>
</xacml-ctx:Request>

此请求会导致允许

这是Axiomatics Policy Administration Point中评估跟踪的样子:

Policy simulation in the Axiomatics Policy Server