添加/删除角色是否需要“发布到PDP”操作才能在wso2中生效?

时间:2014-03-31 17:04:44

标签: wso2is xacml

出于测试目的,我们设置了一个允许对一个资源进行GET操作的给定策略给具有管理员角色的用户。

然后我们使用" PEP TryIt"用于检查策略如何应用于具有和不具有Manager角色的用户的表单,以及删除和添加角色后的权限。我们发现了这两种行为: 1)PEP TryIt,返回Permit,用于已删除其经理角色的给定用户 =>意外。 只有在将给定策略发布到PDP后,系统才会返回NotApplicable。

2)对于已经重新分配了经理角色的给定用户,PEP TryIt返回NotApplicable =>意外 只有在将给定策略发布到PDP后,系统才会返回Permit。

每次向给定用户授予/删除角色时,是否需要将策略发布到PDP?这是预期的行为还是应该被视为错误?

谢谢! Fermin Ordaz。

1 个答案:

答案 0 :(得分:0)

是的..我猜你已经体验过正确的行为......

Carbon用户存储是PDP的属性查找器(PIP)。基本上Carbon用户存储是默认的PIP实现。在PIP级别,PDP引入了属性缓存。简而言之,我们可以说它缓存了用户的属性(这里是用户的角色)。您的分配修改,PIP缓存不知道。 (因为用户存储和PDP充当两个独立的实体)因此它不能使缓存无效。这已经导致经历了上述结果。基本上属性源(用户存储或任何)独立于PDP,它们可以单独运行。有两种方法可以解决这个问题,

  1. 更新与PIP相关的任何属性后。您可以使用UI或API清除属性缓存。在UI中,您可以转到Entitlement-> PDP->Extension并显示清除属性缓存的图标。这已通过管理服务公开..因此您也可以从某些外部应用程序调用此方法。

  2. 您可以使用entitlement.properties目录中的<IS_HOME>/repository/conf/security文件来禁用或减少属性缓存的失效值

  3.   

    PDP.AttributeCaching.Enable =真

         

    PDP.AttributeCaching.CachingInterval = 300

    另外,对于NotApplicable,我猜你没有在PDP中启用策略。一旦你向PDP发布了一个策略..必须启用它才能把它放到实际的运行时