XACML策略中的分层属性



我们使用的是WSO2身份服务器5.1.0。

我们有一个位置层次结构,例如plant1-> aket1-> unit1。现在,如果用户对Plant1具有属性,则他也应该访问Unit1(树中所有父母的孩子)。

我们可以在XACML中指定吗?我们将层次结构存储在DB中。如果需要,我们也可以提供层次元素的列表作为属性列表。

样本中解释的问题:用户BOB已获得对区域2的访问,如下所示:

Plant1

| - area1

     |--Unit1

| - area2

     |--Unit2

我们要在XACML策略中指定abor2位置。现在,如果需要允许使用区域2或UNIT2的请求,则应在Plant1,Area1或unit1的请求时应被拒绝。

我需要XACML策略的结构。

您可以在XACML实现中使用自定义PIP(策略信息点,又称属性提供程序)来实现此功能。我不知道WSO2是那么多,但是根据DOC的说法,它也可以通过自定义PIPS进行扩展,因此我认为这应该可以解决问题。

这个想法是,在XACML策略中,您使用具有自定义属性的属性词组来表示某些属性的层次结构中的最高父值,例如。attributeId = resource-id-parent 对于 resource-id 属性值的父值。

您的自定义pip做什么:当请求此自定义属性ID resource-id-parent 时,该pip从请求中获取属性 resource-id 的值,即" Area2"或" Unit2",然后从您的DB中获取层次结构中的相应最高值(或以上所有值(如果愿意的话))并将其返回为袋子。然后,在XACML策略中,您可以在匹配或最初的字符串中使用字符串等值,以使属性签名器与" abore2"匹配(请记住,属性esignator始终将其评估为袋子)。

最新更新