如何在 KeyCloak 中分配复合角色

How to assign Composite Roles in KeyCloak

我在 Spring 启动应用程序中使用 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;
}

But its assigns all roles as composite. I want to assign a particular role as composite

那是因为您添加了完整列表:

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)))