所有 KeyCloak 管理 API 调用上的 NullPointerException

我正在尝试使用 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 客户端时失败。知道这里发生了什么吗?


慕容森
浏览 285回答 3
3回答

杨__羊羊

简而言之(甚至可能太多了),有一个与 Resteasy 库相关的错误,其中JsonBindingProvider优先于ResteasyJackson2Provider,这使得 json 有效负载中的某些属性无法正确映射,并且它们的值会丢失。因此出现了 NullPointerException。如果您使用 JBoss 或 WildFly,最简单的解决方案应该是resteasy-json-binding-provider从jboss-deployment-structure.xml文件中的部署中排除模块:<jboss-deployment-structure>&nbsp; &nbsp; <deployment>&nbsp; &nbsp; &nbsp; &nbsp; <exclusions>&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <module name="org.jboss.resteasy.resteasy-json-binding-provider"/>&nbsp; &nbsp; &nbsp; &nbsp; </exclusions>&nbsp; &nbsp; </deployment></jboss-deployment-structure>
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java