gpt4 book ai didi

java - 如何在 Java 中获取 XACML 控制台打印

转载 作者:行者123 更新时间:2023-11-30 08:04:04 25 4
gpt4 key购买 nike

我正在处理作为一个令人难以置信的新人并致力于制定一些政策。当然,我遇到了问题,通常我会首先将一些 print.ln 语句放入 Java 中,以开始弄清楚代码到达(或不到达)的位置,但我在 OASIS 文档中没有看到任何内容用于打印输出或调试的 XACML。

所以,我想知道是否有办法做到这一点,或者我是否可以投入一些东西来弄清楚某些内容在策略/规则评估中的工作位置或原因。

具体问题是我从策略规则中获得许可,它似乎将“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>

我认为这可能是 function:any-of 和 string-equal 函数导致它在这里评估真实条件,但我不确定。我正在与另一个人合作解决这个问题,他似乎坚持认为这不是问题,但我没有完整的代码可以解决。

但是,如果有一种方法可以打印出来,那就太好了,特别是因为我想知道在运行不同的算法(例如第一个适用的算法)时我的评估会达到什么程度。

最佳答案

您所追求的与 OASIS XACML 规范无关,而与您使用的引擎有关。您必须告诉 Balana 打印语句/跟踪。 Axiomatics Policy Server为您提供了这种可能性:您可以模拟评估并获取回溯,该回溯显示发生了什么、得到什么结果以及原因。

您的代码片段表示,如果 urn:oasis:names:tc:xacml:1.0:subject:subject-id 至少有一个值,它将返回 true(因为标记 >MustBePresent 设置为 true),并且这些值之一必须等于 PI

例如,如果您有以下策略(与您的策略相同,但包含在 RulePolicy 中:

ALFA 表示法 ( wikipedia )

namespace example{

import Attributes.*

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

}
}

XACML 3.0 表示法

<?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>

使用公理策略管理点 (PAP) 测试策略

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

空 XACML 请求

<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 标志,此请求会导致不确定

主题 ID 错误的 XACML 请求

<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>

此请求导致NotApplicable

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

<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">PI</xacml-ctx:AttributeValue>
</xacml-ctx:Attribute>
</xacml-ctx:Attributes>
</xacml-ctx:Request>

此请求导致许可

这就是 Axiomatics 策略管理点中评估跟踪的样子:

Policy simulation in the Axiomatics Policy Server

关于java - 如何在 Java 中获取 XACML 控制台打印,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31417006/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com