Создать пользователя в keycloak через keycloak admin client возвращает IllegalArgumentException

Я хочу создать пользователя через keycloak admin client, но я получаю:

java.ленг.IllegalArgumentException: RESTEASY003720: путь param realm не был предоставлен параметром map

вот мой боб для keycloak:

@Bean
Keycloak keycloak() {
return KeycloakBuilder
    .builder()
    .serverUrl(localhost:9080/auth)
    .realm(REALM)
    .clientId(CLIENT_ID)
    .username(USERNAME)
    .password(PASSWORD)
    .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build())
    .build();
}

Я использую этот код для вызова keycloak:

CredentialRepresentation credentialRepresentation = new 
CredentialRepresentation();
credentialRepresentation.setType(CredentialRepresentation.PASSWORD);
credentialRepresentation.setValue(password);
UserRepresentation userRepresentation = new UserRepresentation();
userRepresentation.setUsername(username);
userRepresentation.setFirstName(firstName);
userRepresentation.setLastName(lastName);
userRepresentation.setEnabled(true);
userRepresentation.setCredentials(
    Arrays.asList(credentialRepresentation));
keycloak.realm(REALM).users().create(userRepresentation);

и keycloak, и keycloak admin client имеют одинаковую версию (4.0.0.Финал)

мой stacktrace выглядит как это:

java.ленг.IllegalArgumentException: RESTEASY003720: путь param realm не был предоставлен картой параметров в орг.с JBoss.resteasy.specimpl.ResteasyUriBuilder.replaceParameter (ResteasyUriBuilder.java: 659) в орг.с JBoss.resteasy.specimpl.ResteasyUriBuilder.buildString (ResteasyUriBuilder.java: 581) в орг.с JBoss.resteasy.specimpl.ResteasyUriBuilder.buildFromValues (ResteasyUriBuilder.java: 780) на орг.с JBoss.resteasy.specimpl.ResteasyUriBuilder.build (ResteasyUriBuilder.java: 772) в орг.с JBoss.resteasy.клиент.jaxrs.внутренний.ClientWebTarget.getUri (ClientWebTarget.java: 108) в орг.с JBoss.resteasy.клиент.jaxrs.внутренний.полномочие.Клиентинвокер.createRequest (ClientInvoker.java: 124) в орг.с JBoss.resteasy.клиент.jaxrs.внутренний.полномочие.Клиентинвокер.invoke (ClientInvoker.java: 104) в орг.с JBoss.resteasy.клиент.jaxrs.внутренний.полномочие.ClientProxy.invoke(ClientProxy.Ява:76) на com.солнце.полномочие.$ Proxy240.grantToken (неизвестный источник) в орг.keycloak.администратор.клиент.знак.TokenManager.grantToken (TokenManager.Ява:89) в орг.keycloak.администратор.клиент.знак.TokenManager.процедуры getaccesstoken(TokenManager.Ява:69) в орг.mycompany.usermanagement.услуга.KeycloakService.createUserInSSO (KeycloakService.java: 45)

и вот моя сборка.Gradle в

compile group: 'org.keycloak', name: 'keycloak-admin-client', version: '4.0.0.Final'
compile group: 'org.jboss.resteasy', name: 'resteasy-jaxrs', version: '3.1.4.Final'
compile group: 'org.jboss.resteasy', name: 'resteasy-client', version: '3.1.4.Final'
compile group: 'org.jboss.resteasy', name: 'resteasy-jackson2-provider', version: '3.1.4.Final'

1 ответов


вы используете Spring Boot?

я попробовал ваш сценарий для себя и хорошо работает для меня (протестирован на keycloak 4.0.0 и Spring Boot 1.5.10.ВЫПУСКАТЬ.)

Я сделал 1 изменение, как вы создаете Bean Keycloak (мой код от official docs). Убедитесь, что realm is master и client_id is admin-cli.

@Bean
Keycloak initKeycloakWithAdminRole() {
    return Keycloak.getInstance(
            "http://localhost:8080/auth",
            "master",
            "admin",
            "admin",
            "admin-cli");


мой код

сервис код

контроллер код

Depedencies здесь