我正在使用远程Rice 2.3.6(嵌入在Kuali Coeus 5.2.1中)作为IAM后端的Grails应用程序。这很多方面都是成功的!但是,这个人是不是:返回Kuali Rice远程API:removePrincipalFromRole无提示失败
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,为固定水稻2.5.1被标记上。这可能会带来进一步的障碍,但是目前这个呼叫即使对于没有限定符的角色也是失败的,即当上述呼叫中的qualifiers
是空的Map时。
如果是这样的问题,第一次调用将失败,Dan不会断言第二次调用返回true。 –
我传递了一个空的限定符Map(Groovy的'[:]'),而不是'null',所以我应该在这里很好。我使用'assignPrincipalToRole'时没有任何问题;我会编辑这个问题,使其更清晰。 –
我不知道是谁投了答案,因为它不正确?对不起肯,我错过了丹的评论,第二个调用返回true,我不知道我怎么知道这个调用是否通过了任何限定符,因为它不是我正在处理的api调用。我可能完全错过了你的观点,但我只是看着代码,并认为它可能是基于评论的情况。 –