我想向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
答案 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());