我作为一个令人难以置信的新人工作xacml并致力于制定政策。当然我遇到了问题,通常我会先把一些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和字符串相等的函数导致它在这里评估一个真实的条件,但我不确定。我和其他人一起工作,他似乎坚持认为这不是问题,但我没有完整的代码。
但是,如果有一种方法可以进行打印效果很好,特别是因为我想知道在运行不同的算法时我的评估会在哪里进行。
答案 0 :(得分:1)
您所关注的内容与OASIS XACML规范无关,也与您使用的引擎无关。你必须告诉Balana打印报表/跟踪。 Axiomatics Policy Server为您提供了这样的可能性:您可以模拟评估并获得回溯,向您显示发生的事情,获得的结果以及原因。
您的代码段表示如果urn:oasis:names:tc:xacml:1.0:subject:subject-id
至少有一个值(因为标志MustBePresent
设置为true),它将返回true,并且其中一个值必须等于{{1 }}
例如,如果您有以下政策(与您的政策相同但包含在PI
和Rule
内:
Policy
namespace example{
import Attributes.*
policy simpleCondition{
apply firstApplicable
rule simpleCondition{
condition "PI"==subjectId
permit
}
}
}
构建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>
标记,此请求会导致不确定。
MustBePresent
此请求会导致 NotApplicable 。
<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中评估跟踪的样子: