Ключ Для Создания Клиента

#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")