由于 "unknown resource",无法通过 keycloak-admin-client 将用户添加到 Keycloak
Failed adding user by keycloak-admin-client to Keycloak due to "unknown resource"
我尝试在 Java 代码中使用 keycloak-admin-client,如下所示,然后出现异常。从异常情况来看,它似乎在构建 API URL 时失败了,甚至在到达 Keycloak 之前。有人知道为什么会这样吗?
我是 运行 Keycloak,在 docker 容器内并暴露端口 8078。
public static void main(String ... args) {
Keycloak kc = KeycloakBuilder.builder()
.serverUrl("http://localhost:8078/auth")
.realm("master")
.username("admin")
.password("admin")
.clientId("admin-cli")
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
.build();
CredentialRepresentation credential = new CredentialRepresentation();
credential.setType(CredentialRepresentation.PASSWORD);
credential.setValue("test123");
UserRepresentation user = new UserRepresentation();
user.setUsername("testuser");
user.setFirstName("Test");
user.setLastName("User");
user.setEnabled(true);
user.setCredentials(Arrays.asList(credential));
kc.realm("master").users().create(user);
}
异常:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.mojo.exec.ExecJavaMojo.run(ExecJavaMojo.java:294)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.UriBuilder.resolveTemplates(Ljava/util/Map;)Ljavax/ws/rs/core/UriBuilder;
at org.jboss.resteasy.client.jaxrs.internal.ClientWebTarget.resolveTemplates(ClientWebTarget.java:158)
at org.jboss.resteasy.client.jaxrs.internal.proxy.SubResourceInvoker.invoke(SubResourceInvoker.java:65)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
at com.sun.proxy.$Proxy39.realm(Unknown Source)
at org.keycloak.admin.client.Keycloak.realm(Keycloak.java:71)
at com.gallagher.security.keycloak.client.Program.main(Program.java:76)
Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.UriBuilder.resolveTemplates(Ljava/util/Map;)Ljavax/ws/rs/core/UriBuilder;
此错误通常表示路径上有 2 个版本的 class。
如果您使用像 Maven 这样的依赖框架,您可以验证继承关系中是否包含正确的库
这个class - "javax.ws.rs.core.UriBuilder"
我尝试在 Java 代码中使用 keycloak-admin-client,如下所示,然后出现异常。从异常情况来看,它似乎在构建 API URL 时失败了,甚至在到达 Keycloak 之前。有人知道为什么会这样吗?
我是 运行 Keycloak,在 docker 容器内并暴露端口 8078。
public static void main(String ... args) {
Keycloak kc = KeycloakBuilder.builder()
.serverUrl("http://localhost:8078/auth")
.realm("master")
.username("admin")
.password("admin")
.clientId("admin-cli")
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
.build();
CredentialRepresentation credential = new CredentialRepresentation();
credential.setType(CredentialRepresentation.PASSWORD);
credential.setValue("test123");
UserRepresentation user = new UserRepresentation();
user.setUsername("testuser");
user.setFirstName("Test");
user.setLastName("User");
user.setEnabled(true);
user.setCredentials(Arrays.asList(credential));
kc.realm("master").users().create(user);
}
异常:
java.lang.reflect.InvocationTargetException
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:497)
at org.codehaus.mojo.exec.ExecJavaMojo.run(ExecJavaMojo.java:294)
at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.UriBuilder.resolveTemplates(Ljava/util/Map;)Ljavax/ws/rs/core/UriBuilder;
at org.jboss.resteasy.client.jaxrs.internal.ClientWebTarget.resolveTemplates(ClientWebTarget.java:158)
at org.jboss.resteasy.client.jaxrs.internal.proxy.SubResourceInvoker.invoke(SubResourceInvoker.java:65)
at org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76)
at com.sun.proxy.$Proxy39.realm(Unknown Source)
at org.keycloak.admin.client.Keycloak.realm(Keycloak.java:71)
at com.gallagher.security.keycloak.client.Program.main(Program.java:76)
Caused by: java.lang.NoSuchMethodError: javax.ws.rs.core.UriBuilder.resolveTemplates(Ljava/util/Map;)Ljavax/ws/rs/core/UriBuilder;
此错误通常表示路径上有 2 个版本的 class。
如果您使用像 Maven 这样的依赖框架,您可以验证继承关系中是否包含正确的库
这个class - "javax.ws.rs.core.UriBuilder"