Образец кода Java, который я использую:
public static AjaxResponse createUser(User newUser) {
Keycloak keycloak = Keycloak.getInstance(
SERVER_URL,
REALM,
USERNAME,
PASSWORD,
CLIENT_ID);
// Get Realm
RealmResource realmResource = keycloak.realm(REALM);
UsersResource userResource = realmResource.users();
// Create User Representation
UserRepresentation user = getUserRepresentation(newUser);
// Create user (requires manage-users role)
try {
System.out.println("Username: {}", userResource.get("USER-ID-HERE").toRepresentation().getUsername());
System.out.println("Count: " + userResource.count());
Response response = userResource.create(user);
System.out.println("Response: " + response.getStatusInfo());
System.out.println("Response: " + response.getStatus());
System.out.println("Response: " + response.getMetadata());
} catch (Exception e) {
System.out.println(ExceptionUtils.getStackTrace(e));
return new AjaxResponse("Fail", false);
}
return new AjaxResponse("Successful User Creation", true);
}
private static UserRepresentation getUserRepresentation(User newUser) {
UserRepresentation user = new UserRepresentation();
user.setEnabled(true);
user.setUsername(newUser.getUsername());
user.setFirstName(newUser.getFirstName());
user.setLastName(newUser.getLastName());
user.setEmail(newUser.getEmail());
CredentialRepresentation credentialRepresentation = new CredentialRepresentation();
credentialRepresentation.setTemporary(true);
credentialRepresentation.setType(CredentialRepresentation.PASSWORD);
credentialRepresentation.setValue(newUser.getUsername());
user.setCredentials(Collections.singletonList(credentialRepresentation));
}
Ответ, который я получаю, когда запускаю код:
Username: USERNAME Correctly Identified here
Count: 98
Response: Conflict
Response: 409
Response: [Connection=keep-alive,Content-Length=46,Content-Type=application/json,Date=Tue, 03 Jul 2018 15:27:58 GMT,Server=WildFly/10,X-Powered-By=Undertow/1]`
Некоторые мысли:
Я добавил счетчик, чтобы определить, работает ли все соединение вообще. И кажется, что возвращенный счет верен. Поэтому я успешно подключаюсь к Keycloak, но что-то еще не получается, когда я пытаюсь создать пользователя.
Зависимости в моем pom.xml
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-servlet-filter-adapter</artifactId>
<version>3.2.1.Final</version>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
<artifactId>keycloak-admin-client</artifactId>
<version>3.2.1.Final</version> (Have also tried 3.1.0.Final and 3.2.0.Final)
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-client</artifactId>
<version>3.1.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jackson2-provider</artifactId>
<version>3.1.4.Final</version>
</dependency>
<dependency>
<groupId>org.jboss.resteasy</groupId>
<artifactId>resteasy-jaxrs</artifactId>
<version>3.1.4.Final</version>
</dependency>
Как я понял, эти зависимости также связаны:
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-databind</artifactId>
<version>${jackson-version}</version>
</dependency>
<dependency>
<groupId>com.fasterxml.jackson.core</groupId>
<artifactId>jackson-annotations</artifactId>
<version>${jackson-version}</version>
</dependency>
Другая информация:
Keycloak Version Я использую: 3.2.0
API Keycloak можно найти здесь
Более подробную информацию о коде HTTP 409 можно найти здесь
Я был бы очень признателен за любую помощь или любое руководство.
Примечание. Учетные данные и все переменные проверялись один раз, два раза, трижды и еще раз 10 раз. Я искал полный рабочий пример. Но большинство не в состоянии указать требуемые зависимости, и поэтому мой код не выполняется.
Примечание: я также использую Tomcat-8, и сейчас я углубляюсь в проблему. Я вижу, что есть, вероятно, некоторые специальные конфигурации для Tomcat8. Обратите внимание, что выход из системы аутентификации для моего веб-приложения уже работает должным образом.