从Java代码创建UserStorageProvider

时间:2019-07-15 10:50:42

标签: realm keycloak

我想向Keycloak添加自定义UserStorageSPI。

我们可以通过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

1 个答案:

答案 0 :(得分:2)

您需要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());