#java #spring-boot #keycloak #keycloak-services
Вопрос:
Я использую keycloak-admin-клиент 13.0.0 в своем приложении для весенней загрузки. Я могу получить все роли от KeyCloak. Мне нужна одна роль в качестве составных ролей и назначенные роли в этой роли.
Я использовал следующий код для назначения составного. Но он назначает все роли как составные. Я хочу назначить определенную роль в качестве составной
public List<RoleRepresentation> addComposites(String roleName) { // list of roles List<RoleRepresentation> roleRepresentations = listRoles(); RoleResource roleResource = rolesResource.get(roleName); roleResource.addComposites(roleRepresentations); return roleRepresentations; }
Ответ №1:
Но он назначает все роли как составные. Я хочу назначить определенную роль в качестве составной
Это потому, что вы добавили полный список :
List<RoleRepresentation> roleRepresentations = listRoles();
...
roleResource.addComposites(roleRepresentations);
Вам нужно отфильтровать из этого списка роль, которую вы хотите добавить в качестве составной, следующим образом:
Optional<RoleRepresentation> compositive =
roleRepresentations.stream()
.filter(r -> r.getName().equals(nameOfRoleToBeAddedAsCompositive))
.findFirst();
if(compositive.isPresent())
roleResource.addComposites(List.of(compositive.get()));
Или чище:
roleRepresentations.stream()
.filter(r -> r.getName().equals(nameOfRoleToBeAddedAsCompositive))
.findFirst()
.ifPresent(role -> roleResource.addComposites(List.of(role)))