[英]Creating keycloak users through spring boot
我正在尝试创建一个 keycloak object 以使用以下代码使用 keycloak 注册新用户:
public Keycloak getInstance() {
if (keycloak == null) {
return KeycloakBuilder.builder()
.realm(realm)
.serverUrl(serverURL)
.clientId(clientID)
.clientSecret(clientSecret)
.grantType(OAuth2Constants.CLIENT_CREDENTIALS)
.build();
}
return keycloak;
}
但我不断收到以下错误:
java.lang.ClassCastException: class org.jboss.resteasy.client.jaxrs.internal.ResteasyClientBuilderImpl cannot be cast to class javax.ws.rs.client.ClientBuilder (org.jboss.resteasy.client.jaxrs.internal.ResteasyClientBuilderImpl and javax .ws.rs.client.ClientBuilder 位于 org.keycloak.admin.client.ClientBuilderWrapper.create(ClientBuilderWrapper.java:29) 的加载程序“app”的未命名模块中~[keycloak-admin-client-17.0.1.Z68995FCBF432492D15484DAC04 :17.0.1] at org.keycloak.admin.client.spi.ResteasyClientClassicProvider.newRestEasyClient(ResteasyClientClassicProvider.java:35) ~[keycloak-admin-client-17.0.1.jar:17.0.1] at org.keycloak.admin .client.Keycloak.newRestEasyClient(Keycloak.java:98) ~[keycloak-admin-client-17.0.1. jar:17.0.1] at org.keycloak.admin.client.Keycloak.<init>(Keycloak.java:89) ~[keycloak-admin-client-17.0.1.jar:17.0.1] at org.keycloak. admin.client.KeycloakBuilder.build(KeycloakBuilder.java:146) ~[keycloak-admin-client-17.0.1.jar:17.0.1] at com.microfinanceBank.Customer.Config.KeycloakProvider.getInstance(KeycloakProvider.java:41 ) ~[classes/:na] at com.microfinanceBank.Customer.service.KeycloakAdminClientServices.wow(KeycloakAdminClientServices.java:31) ~[classes/:na] at com.microfinanceBank.Customer.controller.CustomerController.getCustomer(CustomerController.java :68) ~[classes/:na] 在 com.microfinanc eBank.Customer.controller.CustomerController$$FastClassBySpringCGLIB$$8c9f9beb.invoke(<generated>) ~[classes/:na]
以下是我的 keycloak 依赖项:
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>17.0.1</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>6.1.0.Alpha1</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>6.1.0.Alpha1</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-multipart-provider</artifactId>
<version>6.1.0.Alpha1</version>
</dependency>
<dependency>
<groupId>com.guicedee.services</groupId>
<artifactId>jakarta.ws.rs-api</artifactId>
<version>1.2.2.1</version>
</dependency>
我究竟做错了什么?
我尝试添加一些依赖项,但一直出错。 请问我该怎么办。在此先感谢
您可以将 keycloak 的 SDK 用于您的 springboot 应用程序。 在pom.xml
中包含这两个依赖项
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-spring-boot-starter</artifactId>
<version>18.0.2</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>18.0.2</version>
</dependency>
之后在你的 springboot 应用程序中创建一个 keycloak 的实例。
public Keycloak getAdminKeycloakUser() {
return KeycloakBuilder.builder().serverUrl("keycloak-auth-url")
.grantType("password").realm("realm-name")
.clientId("client-id")
.username("admin-user")
.password("admin-password")
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()).build();
}
上述方法将为您提供在 Keycloak 中创建用户所需的管理员用户。 下一步是获取 realm,因为 realm 管理用户。
public RealmResource getRealm() {
return getAdminKeycloakUser().realm(realm);
}
最后,现在您可以使用org.keycloak.representations.idm.UserRepresentation
创建用户。
public void createUser() {
UserRepresentation userRepresentation = new UserRepresentation();
userRepresentation.setUsername("username");
userRepresentation.setFirstName("first-name");
userRepresentation.setLastName("last-name");
userRepresentation.setEmail("test@email.com");
Response response = getRealm().realmResource.users().create(userRepresentation);
//If user is created successfully 200 is returned for response status.
//Set password flow
CredentialRepresentation passwordCred = new CredentialRepresentation();
String userId = CreatedResponseUtil.getCreatedId(response);
passwordCred.setTemporary(false);
passwordCred.setType("password");
passwordCred.setValue("some-password");
UserResource userResource = realmResource.users().get(userId);
userResource.resetPassword(passwordCred);
}
UserRepresentation userRepresentation = new UserRepresentation();
userRepresentation.setUsername("username");
userRepresentation.setFirstName("first-name");
userRepresentation.setLastName("last-name");
userRepresentation.setEmail("test@email.com");
// set other required values
javax.ws.rs.core.Response response = KeycloakBuilder.builder().build().realm("your-realm-nam").users().create(userRepresentation);
if (response != null && response.getStatusInfo().getFamily() == Family.SUCCESSFUL)
{
return org.keycloak.admin.client.CreatedResponseUtil.getCreatedId(response); // returns String (Id of created User)
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.