Создание пользователей с помощью keycloak

Я пытаюсь создать пользователя с конечной точкой keycloak / users в проекте весенней загрузки. Вот шаги, которым я следовал Сначала создал администратора в главной области и клиента admin-cli. Используется для получения экземпляра keycloak для дальнейших операций.

return Keycloak.getInstance(
            keycloakProperties.getAuthServerUrl(),
            "master",
            adminConfig.getUserName(),
            adminConfig.getPassword(),
            "admin-cli");

Я могу создать пользователя, если не добавлю клиентское представление в user. Если я добавлю CredentialRepresentation внутри объекта userRepresentation, я получаю ошибку BadRequest (код 400) без каких-либо подробностей. Я просмотрел журналы сервера keycloak, которые тоже не помогли. В качестве попытки я сначала создал пользователя, а позже сбросил пароль, а затем также создал пользователя, но не смог установить пароль с конечной точкой сброса пароля (та же ошибка). Как упоминалось в документах, я установил для свойства enabled userRepresentation значение правда. Версия Keycloak: 12.0.4, версия загрузки Spring: 2.1.6.RELEASE Я попытался прочитать сущность из полученного ответа, но мне это тоже не удалось. Любая помощь в решении проблемы будет оценена по достоинству. // Код для создания пользователя

UserRepresentation userRepresentation = new UserRepresentation();
    userRepresentation.setUsername(userModel.getEmail());
    userRepresentation.setEmail(userModel.getEmail());
    userRepresentation.setCredentials(Arrays.asList(createPasswordCredentials(userModel.getPassword())));
    userRepresentation.setEnabled(true);
    Keycloak keycloak = getKeycloakInstance(keycloakProperties);
    Response response = keycloak.realm(keycloakProperties.getRealm()).users().create(userRepresentation);
    log.info("Response Code {}", response.getStatus());

Код для представления учетных данных:

private static CredentialRepresentation  createPasswordCredentials(String password) {
    CredentialRepresentation passwordCredentials = new CredentialRepresentation();
    passwordCredentials.setTemporary(false);
    passwordCredentials.setType(CredentialRepresentation.PASSWORD);
    passwordCredentials.setValue(password);
    return passwordCredentials;
  }

Можете ли вы добавить соответствующий код, который вызывает ошибку? часть, в которой вы создаете репрезентацию пользователя

Evil_skunk 05.04.2021 22:38

Ответ response = keycloak.realm (keycloakProperties.getRealm ()). Users (). Create‌ (userRepresentation) ‌; log.info ("Код ответа {}", response.getStatus ()); // возвращает 400, если я установил userRepresentation.setCredentials (Arrays.asList (createPasswo‌ rdCredentials (userMo‌ del.getPassword ()))) ‌;

Mittal 05.04.2021 22:47

Ошибка скорее всего в том, как вы заливаете userRepresentation. Можете ли вы отредактировать свой вопрос и добавить полный код того, как эта переменная создается и заполняется (а также код для вашего CredentialRepresentation, иначе очень сложно помочь

Evil_skunk 05.04.2021 22:52

Отредактировал вопрос.

Mittal 05.04.2021 23:10

:-( Я попробовал именно ваш код (простой java, а не весной) и получил ответ 201 (новый пользователь с установленным паролем), также с KC 12.0.4

Evil_skunk 05.04.2021 23:18

@Evil_skunk для Keycloak.getInstance, какой импорт вы использовали?

dreamcrash 05.04.2021 23:20

Я использовал keycloak-admin-client: 12.0.4 из org.keycloak и импортировал org.keycloak.admin.client.Keycloak

Evil_skunk 05.04.2021 23:22

Не могли бы вы поделиться кодом, как получить экземпляр keyclock? Я просматривал документацию несколько раз, но не мог понять проблему, мой пользователь имеет роль администратора для управления пользователями

Mittal 05.04.2021 23:22

@Mittal, за какой документацией вы следите, можете дать ссылку на нее, пожалуйста

dreamcrash 05.04.2021 23:26

@Mittal добавил сюда мой (рабочий) тестовый код pastebin.com/HhDFrXb5

Evil_skunk 05.04.2021 23:29

Похоже, никакой разницы, я потратил много ошибок, чтобы понять это. @dreamcrash Я просто следил за официальной документацией и некоторыми статьями keycloak.org/docs/latest/securing_apps/index.htmlioansurariu.ro/2020/10/19/…

Mittal 06.04.2021 00:33
0
11
42
1

Ответы 1

Я просто хочу обновить реальную причину этой проблемы. Сервер, который я использовал, был старой версии, и проблема была устранена при тестировании на последнем сервере Keycloak. Спасибо за поддержку, ребята :)

Другие вопросы по теме