2013-02-28 63 views
0

我正在编写一个策略,其中包含规则的有序许可覆盖。XACML规则主题

规则1允许访问具有适当安全级别的任何人的所有内容。

规则2允许使用备选凭证访问某些内容(3资源)给任何人。

规则3拒绝访问所有其他内容。如果用户既没有安全级别,也没有凭证,这是一个故障安全。

我的问题是,我可以让我的服务器运行程序和规则1工作正常。对于规则2,如果我给出所需的值,唯一的结果是“拒绝”,如果我留下任何空白,它就是“不确定”。尽管使用了排序许可覆盖,但我认为该政策并未运行我的规则2。

我已经尝试运行规则3注释掉的脚本,结果只是“不确定”或“不适用”。

在规则1中,我将目标留空。对于规则2,我定义了资源,但没有定义主题。我是否需要指定主题才能使此规则起作用?还有什么可能导致我的第一和第三条规则起作用,但不是我的第二条规则。

+0

我解决了这个问题。我在政策和规则1中调用了相同的资源,所以我不能再次调用它。 XACML中的资源必须是相互排斥的。资源是我的包,子资源是页面。 – Nicholas 2013-02-28 20:35:53

+0

......我解决了这个问题,它是通过在规则1中声明一个具有高级许可的主题,并将条件留空。该规则是一个许可证规则。 – Nicholas 2013-02-28 20:36:56

回答

0

如果你可以在这里分享你的政策,这将是很好的,所以我们可以看看。你用什么来写和测试政策。

正如你可能知道不确定是由于PDP内部的错误,您需要提供一个属性,但您并未发送该属性,或者您对缺少的属性使用了一个字符串(或任何一个且只有一个)的函数。

顺便说一句,为什么你不使用第一适用作为组合算法?

检查出ALFA的Eclipse插件(免费),能够无需知道XACML语法能够快速地写出您的策略:http://www.axiomatics.com/axiomatics-alfa-plugin-for-eclipse.html