我正在嘗試使用 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
提交
取消