java - 如何在 KeyCloak 中分配复合角色

标签 java spring-boot keycloak keycloak-services

我在 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;
}

roles

最佳答案

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

关于java - 如何在 KeyCloak 中分配复合角色,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67682331/

相关文章:

java - 从 sharedpreference 中删除所有数据

java - 如何使用 Spring Boot 注入(inject)以 InputStreamReader 作为参数的 BufferedReader?

spring - 一个 Spring Boot 项目,部署到 JAR 或 WAR

spring - 将 Spring Security 全局方法安全性与 Keycloak 集成

java - 使用 vtd-xml 加载巨大的 4Gb XML 文件

JAVA:如何使用方法的名称参数创建按钮?

java - 如何求距矩形中心的垂直和水平距离

java - Spring Boot Rest 在注册时设置用户默认配置文件图像

java - KeycloakSecurityContext 在 SpringBoot 中返回 null

identityserver3 - 带有 OpenIdConnect 外部身份提供商的 Keycloak