从 java 代码创建一个 UserStorageProvider

Create a UserStorageProvider from java code

我想添加自定义 UserStorageSPI 到 Keycloak

我们可以通过从 User-Federation -> Add Provider 选项下的下拉列表中选择它来从 UI 开始,但我们想从 Java代码。我们正在尝试创建一个自动化系统,其中从 YAML 文件 中获取属性并自动创建相应的领域和客户端。

Keycloak keycloakClient = KeycloakBuilder.builder()
                             .serverUrl(authUrl)
                             .realm(StringUtils.defaultString(realm, "master"))     
                             .username(username)
                             .password(password)
                             .clientId(StringUtils.defaultString(client, "admin-cli"))
                             .resteasyClient(client)
                             .build();
    
keycloakClient.realms().create(realm);

这是我们用来创建领域的示例代码。
寻找类似的方法来添加 UserStorageSPI

您需要 ComponentRepresentation,您可以使用以下代码创建它:

private ComponentRepresentation createComponentRepresentation() {
    ComponentRepresentation cr = new ComponentRepresentation();
    cr.setName("your user storage provider id");
    cr.setProviderId("your user storage provider id");
    cr.setProviderType("org.keycloak.storage.UserStorageProvider");
    cr.setConfig(new MultivaluedHashMap<>());
    cr.getConfig().putSingle("cachePolicy", "DEFAULT");
    cr.getConfig().putSingle("priority", "10");
    cr.getConfig().putSingle("enabled", "true");
    cr.setParentId("your realm id");

    return cr;
}

并使用 keycloak 客户端在领域上创建用户联盟:

keycloakClient.realm("your realm id").components().add(createComponentRepresentation());