我想知道为什么义务语句中的WSO2 Balana框架只接受“允许”或“拒绝”条件的fulfillOn参数,而忽略“不适用”的结果,这对于在逻辑流程中截取和记录有助于策略调试过程也很有趣。
在Balana ObligationExpression.java的源代码中,我们可以找到:
if("Permit".equals(effect)){
fulfillOn = Result.DECISION_PERMIT;
} else if("Deny".equals(effect)){
fulfillOn = Result.DECISION_DENY;
} else {
throw new ParsingException("Invalid FulfillOn : " + effect);
}你对此有什么看法,这个逻辑工作正常吗?
发布于 2015-11-25 11:54:23
这是按规范的。XACML规范只允许在允许或拒绝时返回义务和建议。在制定策略时,您必须牢记这一点。请参见下文和here。
7.18义务和建议
规则、策略或策略集可以包含一个或多个义务或建议表达式。当评估这样的规则、策略或策略集时,义务或建议表达式应分别评估为义务或建议,只有当评估的规则、策略或策略集的结果与义务的FulfillOn属性或建议的AppliesTo属性的值匹配时,才应将其向上传递到下一级评估(封闭或引用策略、策略集或授权决策)。如果具有匹配FulfillOn或AppliesTo属性的义务或建议表达式中的任何属性赋值表达式的计算结果为“不确定”,则整个规则、策略或策略集应为“不确定”。如果FulfillOn或AppliesTo属性与组合算法或规则评估的结果不匹配,则义务或建议表达式中的任何不确定值都不起作用。作为该程序的结果,如果从中提取义务或建议的规则、策略或策略集未被评估,或者如果它们的评估结果是“不确定的”或"NotApplicable",或者如果评估规则、策略或策略集的决定与评估封闭策略集的决定不匹配,则不应向PEP返回任何义务或建议。如果PDP的评估被视为规则、策略集和策略的树,其中每一个都返回“允许”或“拒绝”,则由PDP返回给PEP的义务和建议集将仅包括与在每个评估级别的结果与由PDP返回的结果相同的那些路径相关联的义务和建议。在缺乏确定性是不可接受的情况下,应该使用确定性组合算法,例如有序拒绝覆盖。另请参阅第7.2节。
允许在NotApplicable上提供义务和建议将是混乱的。想象一下下面的策略结构:
上的义务C
假设传入的请求是:
在您的世界中,响应将(可能)是:许可+义务A、B、C
这真的没有任何意义。
https://stackoverflow.com/questions/33778898
复制相似问题