我在一个Grails应用程序中工作,该应用程序使用remote赖斯2.3.6 (嵌入到Kuali Coeus 5.2.1中)作为IAM后端。这在很多方面都是成功的!但这一条不是:
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为空映射时。
发布于 2016-02-20 03:11:39
您的编辑注释您没有传递限定符,但是代码抛出异常,在这种情况下,查看代码?这会是你的问题吗?
./rice-middleware/kim/kim-impl/src/main/java/org/kuali/rice/kim/impl/role/RoleServiceImpl.java
@Override
public void removePrincipalFromRole(String principalId, String namespaceCode, String roleName,
Map<String, String> qualifier) throws RiceIllegalArgumentException {
if (StringUtils.isBlank(principalId)) {
throw new RiceIllegalArgumentException("principalId is null");
}
if (StringUtils.isBlank(namespaceCode)) {
throw new RiceIllegalArgumentException("namespaceCode is null");
}
if (StringUtils.isBlank(roleName)) {
throw new RiceIllegalArgumentException("roleName is null");
}
if (qualifier == null) {
throw new RiceIllegalArgumentException("qualifier is null");
}...https://stackoverflow.com/questions/35094123
复制相似问题