【问题标题】:How to assign Composite Roles in KeyCloak如何在 KeyCloak 中分配复合角色
【发布时间】:2021-05-25 05:41:19
【问题描述】:
我在我的 Spring Boot 应用程序中使用 keycloak-admin-client 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;
}
【问题讨论】:
标签:
java
spring-boot
keycloak
keycloak-services
【解决方案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)))