#java #jboss #keycloak #keycloak-services
Вопрос:
Я пытаюсь создать новый клиент с ключом, используя keycloak-admin-client
.
Вот мой код:
Keycloak keycloak =
KeycloakBuilder.builder()
.serverUrl("http://localhost:8080/auth")
.realm("realm-name")
.grantType(OAuth2Constants.PASSWORD)
.username("admin")
.password("adminPassword")
.clientId("admin-cli")
.resteasyClient(new ResteasyClientBuilderImpl().connectionPoolSize(10).build())
.build();
ClientRepresentation clientRep = new ClientRepresentation();
clientRep.setClientId(clientId);
clientRep.setSecret(UUID.randomUUID().toString());
clientRep.setProtocol("openid-connect");
keycloak.realm("realm-name").clients().create("test-client");
При этом я получаю несанкционированную ошибку ( javax.ws.rs.NotAuthorizedException: HTTP 401 Unauthorized
), но я знаю, что мой пароль администратора правильный.
Мой вариант использования заключается в том, что я использую главного администратора Keycloak. Мне нужно иметь возможность настроить область, клиента и пользователя (а затем некоторые конфигурации), используя только клиентский API и без каких-либо действий вручную. Мне нужно настроить полностью автоматическую настройку блокировки ключей для сборки CI/CD с докерами.
Стоит отметить, что мне не нужно, чтобы это была самая безопасная стратегия. Я просто хочу написать некоторый код, который я могу использовать для автоматизации настройки экземпляра ключа Dockerize для некоторых тестов.
Ответ №1:
В этой части:
Keycloak keycloak =
KeycloakBuilder.builder()
.serverUrl("http://localhost:8080/auth")
.realm("realm-name")
.grantType(OAuth2Constants.PASSWORD)
.username("admin")
.password("adminPassword")
.clientId("admin-cli")
.resteasyClient(new ResteasyClientBuilderImpl().connectionPoolSize(10).build())
.build();
вместо .realm("realm-name")
использования .realm("master")