1

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

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

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

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

谢谢!费尔明·奥尔达斯。

4

1 回答 1

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目录中找到的文件禁用或减少属性缓存的失效值

PDP.AttributeCaching.Enable=true

PDP.AttributeCaching.CachingInterval=300

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

于 2014-04-01T13:46:41.173 回答