Я работаю в приложении Grails, которое использует удаленный Rice 2.3.6 (встроенный в Kuali Coeus 5.2.1) в качестве IAM-сервера. Многие аспекты этого успеха! Но это один не является:Kuali Rice remote 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, что роль все еще назначена, и это не проблема кэширования между двумя вызовами - я могу подождать респектабельное количество времени и роль все еще назначена.
Любые подсказки?
EDIT:
Было предложено на rice.collab списке рассылки, что проблема может быть связана с KULRICE-9835: removePrincipalFromRole uses attribute id instead of attribute name in qualifier, который помечен как фиксируется в Rice 2.5.1. Это может стать дополнительным препятствием, но на данный момент этот вызов не выполняется даже для ролей без квалификатора, то есть когда qualifiers
в вызове выше представляет собой пустую карту.
Если это вопрос, то первый вызов не удался, и Дэн не утверждал бы, что второй вызов возвращает true. –
Я передаю пустой классификатор Map (Groovy's '[:]'), а не 'null', поэтому я должен быть здесь хорошо. Я делаю то же самое при использовании 'assignPrincipalToRole', без проблем; Я отредактирую вопрос, чтобы сделать это более ясным. –
Интересно, кто голосовал за ответ, так как это не правильно? Извините, Кен, я пропустил комментарий Дэна о том, что второй вызов возвращает true, и я не знаю, как бы я знал, был ли этот вызов передан любым квалификаторам, поскольку это не вызов api, к которому я обращался. Я, возможно, полностью не хватаю вашу точку, но я просто смотрел на код и думал, что это может быть на основе комментария. –