Клиент администратора Keycloak отвечает неверным запросом на попытку составить список областейJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Клиент администратора Keycloak отвечает неверным запросом на попытку составить список областей

Сообщение Anonymous »


Я пытаюсь просто проверить работоспособность нового экземпляра Keycloak (так получилось, что он работает в контейнере Docker), пытаясь составить список областей, используя клиент администратора Java в качестве пользователя-администратора. Но это неоднократно терпит неудачу из-за HTTP 400 Bad Request, очевидно, когда клиент пытается получить токен доступа. Как мне настроить Keycloak или клиент администратора для выполнения этого простого запроса?

Трассировка стека сбоя выглядит следующим образом:

java.lang.AssertionError: возможность перечислять области в [MyClass].listRealms([MyClass].java:69) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0 (собственный метод) в java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) в java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) в java.base/java.lang.reflect.Method.invoke(Method.java:566) в org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:688) [трассировка стека Junit] в org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:75) в org.eclipse.jdt.internal.junit5.runner.JUnit5TestReference.run(JUnit5TestReference.java:98) в org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464) в org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210) Вызвано: javax.ws.rs.ProcessingException: javax.ws.rs.BadRequestException: HTTP 400 Неверный запрос в org.jboss.resteasy.client.jaxrs.internal.ClientInvocate.filterRequest(ClientInvocation.java:603) в org.jboss.resteasy.client.jaxrs.internal.ClientInvocate.invoke(ClientInvocate.java:440) в org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:149) в org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112) в org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) на com.sun.proxy.$Proxy45.findAll (неизвестный источник) в [MyClass].listRealms([MyClass].java:67) ... еще 67 Вызвано: javax.ws.rs.BadRequestException: HTTP 400 Неверный запрос в org.jboss.resteasy.client.jaxrs.internal.ClientInvocate.handleErrorStatus(ClientInvocation.java:219) в org.jboss.resteasy.client.jaxrs.internal.ClientInvocate.extractResult(ClientInvocate.java:195) в org.jboss.resteasy.client.jaxrs.internal.proxy.extractors.BodyEntityExtractor.extractEntity(BodyEntityExtractor.java:62) в org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invokeSync(ClientInvoker.java:151) в org.jboss.resteasy.client.jaxrs.internal.proxy.ClientInvoker.invoke(ClientInvoker.java:112) в org.jboss.resteasy.client.jaxrs.internal.proxy.ClientProxy.invoke(ClientProxy.java:76) по адресу com.sun.proxy.$Proxy43.grantToken (неизвестный источник) в org.keycloak.admin.client.token.TokenManager.grantToken(TokenManager.java:90) в org.keycloak.admin.client.token.TokenManager.getAccessToken(TokenManager.java:70) в org.keycloak.admin.client.token.TokenManager.getAccessTokenString(TokenManager.java:65) в org.keycloak.admin.client.resource.BearerAuthFilter.filter(BearerAuthFilter.java:52) в org.jboss.resteasy.client.jaxrs.internal.ClientInvocate.filterRequest(ClientInvocation.java:590) ... еще 73 Основной код, выполняющий запрос, таков:

public void listRealms() { попробуйте (var keycloak =Container.getKeycloakInstance()) { окончательные области List; пытаться { области = keycloak.realms().findAll(); } catch (final Exception e) {// обеспечивает лучшую диагностику throw new AssertionError("Возможность перечислять области", e); } AssertThat(realms, not(empty())); } } с экземпляром Keycloak, созданным таким образом:

Private static Final String ADMIN_USER = "admin"; частная статическая окончательная строка ADMIN_PASSWORD = «letmein»; частная статическая окончательная строка ADMIN_REALM = «мастер»; частная статическая окончательная строка ADMIN_CLIENT_ID = null; ... общественный Keycloak getKeycloakInstance() { вернуть Keycloak.getInstance(getUri().toASCIIString(), ADMIN_REALM, ADMIN_USER, ADMIN_PASSWORD, ADMIN_CLIENT_ID); } Этот сбой теста происходит при запуске теста в Eclipse. Но проблема также возникает, когда я запускаю тест с помощью Maven (то есть с помощью maven-failsafe-plugin).

Тот же режим сбоя (HTTP 400 Bad Request) также возникает, если я
[*]используйте несуществующий идентификатор клиента, а не нулевой идентификатор клиента (в этом случае я ожидаю, что HTTP 404 Not Found) [*]используйте неправильный пароль (в этом случае я ожидаю HTTP 401 Unauthorized или HTTP 403 Forbidden)
URL-адрес, который я использую, кажется правильным, потому что, если я намеренно использую неправильный путь URL-адреса, я получаю ожидаемый режим сбоя HTTP 404 Not Found, а если я намеренно использую неправильное имя хоста, я получите ожидаемое UnknownHostException.

Эта проблема возникает с версией Key Cloak 11.0.2 (текущая версия на момент написания), а также с версией 11.0.0.
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»