Создать пользователя в 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 здесь