从 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());
我想添加自定义 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());