KeyCloak-以编程方式创建领域/用户/组?

时间:2018-07-25 14:53:44

标签: java rest java-ee keycloak keycloak-services

我们已决定将KeyCloak用于我们的身份和访问管理解决方案,而不是完全在我们的Java EE Web应用程序中实现它。我们正在创建一个多租户解决方案,并且希望通过我们的工作流以编程方式创建安全领域/用户/组,而不是利用KeyCloak的自我注册功能或Web UI,以便我们可以进行诸如获取信用卡详细信息之类的事情等等。我知道我们可能可以利用admin REST APIs来完成此操作,但是我不确定除了手动编码REST调用之外,是否还有更简单的方法可以做到这一点。 KeyCloak是否提供我们可以使用的管理客户端库?还是我们自己坚持为admin API实现REST客户端?

3 个答案:

答案 0 :(得分:1)

我在KeyCloak Java Admin Client周围找到了一些信息。 This gist有很多有用的示例,展示了如何管理用户,领域等。

答案 1 :(得分:0)

Keycloak Java adapters专注于使用而不是配置。您需要实现自己使用必需的参数进行必要的调用。 admin-cli是一种用于这种类型的工具的工具,但我认为这对您的情况没有用。

答案 2 :(得分:0)

Keycloak kc = KeycloakBuilder.builder() 
            .serverUrl("https://localhost:8443/auth")
            .realm("master")
            .username("admin") 
            .password("admin") 
            .clientId("Mycli") 
            .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()) 
            .build();

    CredentialRepresentation credential = new CredentialRepresentation();
    credential.setType(CredentialRepresentation.PASSWORD);
    credential.setValue("test123");

    UserRepresentation user = new UserRepresentation();
    user.setUsername("testuser2");
    user.setFirstName("Test2");
    user.setLastName("User2");
    user.setEmail("aaa@bbb.com");
    user.setCredentials(Arrays.asList(credential));
    user.setEnabled(true);
    user.setRealmRoles(Arrays.asList("admin"));

    // Create testuser
    Response result = kc.realm("my-realem").users().create(user);
    if (result.getStatus() != 201) {
        System.err.println("Couldn't create user.");
        System.exit(0);
    }else{
        System.out.println("Testuser created.... verify in keycloak!");
    }