Keycloak 管理客户端在尝试发出请求时挂起
Keycloack admin client hangs when attempting to make requests
我正在尝试使用管理客户端 SDK 从 Keycloack 中获取一些用户数据。我已经像这样构建了客户端:
Keycloak kc = KeycloakBuilder.builder() //
.serverUrl("some_url")
.realm("some-realm")
.username("admin") //
.password("password") //
.clientId("curl")
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).connectionCheckoutTimeout(10, TimeUnit.SECONDS).build()) //
.build();
System.out.println("built");
UsersResource baz = kc.realm(keycloakConfiguration.getRealm()).users();
System.out.println(baz.count());
似乎发生的情况是我的程序在尝试获取 baz
时无限期挂起 - 我的调试器从未命中它。我不太确定发生了什么 - 我的凭据是正确的。导致构建器 1. 在特定时间段后失败,或者 2.verify 我的凭据正确的正确方法是什么?调试非常令人沮丧。
您可以创建自定义方法来检查您的客户是否 "online"。此方法可能如下所示:
public boolean isKeycloakClientValid(Keycloak keycloakClient) {
try {
tryToPingKeycloak(keycloakClient);
} catch (Exception e) {
logger.error("Error while pinging the keycloak server", e);
return false;
}
return true;
}
使用帮助方法:
private void tryToPingKeycloak(KeycloakClient keycloakClient) {
keycloakClient.serverInfo().getInfo();
}
现在您可以在使用前检查您的客户端:
if (isKeycloakClientValid(kc)) {
UsersResource baz = kc.realm(keycloakConfiguration.getRealm()).users();
}
我正在尝试使用管理客户端 SDK 从 Keycloack 中获取一些用户数据。我已经像这样构建了客户端:
Keycloak kc = KeycloakBuilder.builder() //
.serverUrl("some_url")
.realm("some-realm")
.username("admin") //
.password("password") //
.clientId("curl")
.resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).connectionCheckoutTimeout(10, TimeUnit.SECONDS).build()) //
.build();
System.out.println("built");
UsersResource baz = kc.realm(keycloakConfiguration.getRealm()).users();
System.out.println(baz.count());
似乎发生的情况是我的程序在尝试获取 baz
时无限期挂起 - 我的调试器从未命中它。我不太确定发生了什么 - 我的凭据是正确的。导致构建器 1. 在特定时间段后失败,或者 2.verify 我的凭据正确的正确方法是什么?调试非常令人沮丧。
您可以创建自定义方法来检查您的客户是否 "online"。此方法可能如下所示:
public boolean isKeycloakClientValid(Keycloak keycloakClient) {
try {
tryToPingKeycloak(keycloakClient);
} catch (Exception e) {
logger.error("Error while pinging the keycloak server", e);
return false;
}
return true;
}
使用帮助方法:
private void tryToPingKeycloak(KeycloakClient keycloakClient) {
keycloakClient.serverInfo().getInfo();
}
现在您可以在使用前检查您的客户端:
if (isKeycloakClientValid(kc)) {
UsersResource baz = kc.realm(keycloakConfiguration.getRealm()).users();
}