我正在尝试使用 Java 客户端调用 KeyCloak Admin API。无论我尝试哪种操作 - 创建领域,创建用户帐户等 - 我都会收到以下异常:javax.ws.rs.ProcessingException: java.lang.NullPointerException at org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:53) at org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.filterRequest (ClientInvocation.java:573) 在 org.jboss.resteasy.client.jaxrs.internal.ClientInvocation.invoke(ClientInvocation.java:438) 在 org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker) .java:102) 在 org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) 在 com.sun.proxy.$Proxy214.create(Unknown Source)我的 KeyCloak 代码看起来像这样......Keycloak kc = KeycloakBuilder.builder().realm("master").clientId("admin-cli").username("admin") .password("password").serverUrl("http://localhost:8880/auth") .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()).build();RealmRepresentation realm = new RealmRepresentation(); realm.setDisplayName(displayName); realm.setDisplayNameHtml(displayName); realm.setRealm(realmName); realm.setEnabled(enabled);kc.realms().create(realm);正是在这一点上,我看到了异常。关于这里可能出现什么问题的任何想法?我看到针对管理 API 的所有操作的异常。我知道数据可用,因为我能够对管理 API 进行 curl 调用并且它工作正常。curl -vki -H "Authorization: Bearer XXXXX" http://localhost:8880/auth/admin/realms/master当我拨打这个电话时,我看到了预期的结果。我只在使用 Java 客户端时失败。知道这里发生了什么吗?
3 回答
杨__羊羊
TA贡献1943条经验 获得超7个赞
简而言之(甚至可能太多了),有一个与 Resteasy 库相关的错误,其中JsonBindingProvider优先于ResteasyJackson2Provider,这使得 json 有效负载中的某些属性无法正确映射,并且它们的值会丢失。因此出现了 NullPointerException。
如果您使用 JBoss 或 WildFly,最简单的解决方案应该是resteasy-json-binding-provider从jboss-deployment-structure.xml文件中的部署中排除模块:
<jboss-deployment-structure>
<deployment>
<exclusions>
<module name="org.jboss.resteasy.resteasy-json-binding-provider"/>
</exclusions>
</deployment>
</jboss-deployment-structure>
添加回答
举报
0/150
提交
取消