我的情况是我有一个包含多个规则的策略,并且所有规则都必须为真才能使该策略为真。例如:
Policy A
- Rule 1
- Rule 2
- Rule 3
为了使Policy A
适用,我需要所有三个规则都返回true,即使其中之一返回false,也应该检查我的策略集中的其他策略
我现在拥有的是
<!-- shortened for brevity -->
<Policy RuleCombiningAlgId="...:deny-overrides">
<Rule id="1" Effect="Permit">
...
</Rule>
<Rule id="2" Effect="Permit">
...
</Rule>
<Rule id="3" Effect="Permit">
...
</Rule>
</Policy>
[我认为我的问题是我的规则都没有一个返回“ Deny”,但我最初认为,如果不允许,则应拒绝。我想到了不要在我的所有规则上都放一个,但这会使它变得不雅。
如果相关,我正在使用Authzforce库。
我最初以为如果不允许,应该拒绝
如果这是您想要的,那么您必须使用Deny-unless-permit组合算法(XACML规范的附录C.6),而不是Deny-overrides(附录C.2的附录C.2)。 XACML规范)。我建议您查看appendix C of XACML 3.0 specification,以帮助您为情况选择合适的算法。