【发布时间】:2016-02-20 03:40:09
【问题描述】:
我正在使用远程 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 uses attribute id instead of attribute name in qualifier 有关,在 Rice 2.5.1 中标记为已修复。这可能会带来进一步的障碍,但目前即使对于没有限定符的角色,该调用也会失败,即当上述调用中的 qualifiers 是一个空 Map 时。
【问题讨论】: