Как получить доступ к keycloak с помощью admin-client?

Я пытаюсь изменить роли пользователя в keycloak с помощью keycloak-admin-client в приложении с весенней загрузкой, но я даже не могу создать экземпляр keycloak.

Я пытаюсь получить здесь сервер keycloak, но получаю InstantiationError

    String serverUrl = "http://localhost:8080/auth";
    String realm = "User-Service-Realm";
    String clientId = "admin-cli";

    Keycloak keycloak = Keycloak.getInstance(
      serverUrl,
      realm,
      "admin",
      "admin",
      clientId);
Exception in thread "main" java.lang.InstantiationError: org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder
    at org.keycloak.admin.client.Keycloak.<init>(Keycloak.java:58)
    at org.keycloak.admin.client.Keycloak.getInstance(Keycloak.java:106)
    at de.uni.stuttgart.isw.ccm.userservice.api.KeycloakAdminClientExample.main(KeycloakAdminClientExample.java:31)

По-видимому, это проблема с самим admin-client, поскольку построитель keycloak основан на resteasyclientbuilder. Как получить доступ к keycloak с помощью admin-client?


2
3 891
1

Ответ:

Решено

Похоже, у вас несовместимые библиотеки или версии библиотек. Сообщение об ошибке жалуется, что ResteasyClientBuilder является абстрактным. В нашем рабочем проекте это не так.

Итак, в качестве справки, вот выдержка из нашего файла gradle, чтобы вы могли увидеть рабочую комбинацию версий библиотеки:

implementation 'org.keycloak:keycloak-admin-client:6.0.1'
implementation 'javax.ws.rs:javax.ws.rs-api:2.0'
implementation 'org.jboss.resteasy:resteasy-jaxrs:3.6.3.Final'
implementation 'org.jboss.resteasy:resteasy-client:3.6.3.Final'
implementation 'org.jboss.resteasy:resteasy-jackson2-provider:3.6.3.Final'

Обновлять:

ResteasyClientBuilder стал абстрактным классом с версией 4.0 RESTEasy. Таким образом, похоже, что вы используете версию 4.x, а Keycloak ожидает версию 3.x.