我正在使用远程 Rice 2.3.6(嵌入在 Kuali Coeus 5.2.1 中)作为 IAM 后端的 Grails 应用程序中工作。这方面很多方面都是成功的!但这不是:
org.kuali.rice.kim.api.role.RoleService kimRoleServiceClient
...
kimRoleServiceClient.assignPrincipalToRole(
principalId,
role.namespace,
role.name,
qualifiers)
kimRoleServiceClient.principalHasRole(
principalId,
[kimRoleServiceClient.getRoleIdByNamespaceCodeAndName(
role.namespace,
role.name)],
qualifiers) // returns true, as expected
kimRoleServiceClient.removePrincipalFromRole(
principalId,
role.namespace,
role.name,
qualifiers)
kimRoleServiceClient.principalHasRole(
principalId,
[kimRoleServiceClient.getRoleIdByNamespaceCodeAndName(
role.namespace,
role.name)],
qualifiers) // returns true (unexpected behavior)
无论是作为调用的结果还是作为远程 KC 中记录的异常,都不会返回任何错误catalina.out
。我可以在 KC UI 中验证该角色仍然被分配,这不是两个调用之间的缓存问题——我可以等待相当长的时间并且角色仍然被分配。
有什么线索吗?
编辑:
在 rice.collab 邮件列表中建议该问题可能与KULRICE-9835 有关:removePrincipalFromRole 在 qualifier 中使用属性 id 而不是属性名称,这在 Rice 2.5.1 中标记为已修复。这可能会带来进一步的障碍,但目前即使对于没有限定符的角色,此调用也会失败,即当qualifiers
上面的调用中是一个空 Map 时。