User creation with keycloak

1.9k Views Asked by At

I am trying to create user with keycloak's /users endpoint in a spring boot project . These are the steps I have followed First created an admin in master realm and admin-cli client. Used that to get instance of keycloak for further operations.

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

I am able to get the user created if I don't add the client representation in user. If I add the CredentialRepresentation inside the userRepresentation object ,I am getting the BadRequest error (400 code) without any details . I looked up the keycloak server logs that too wasnt helpful. As a try,I did the user creation first and reset password later,then also user created,but unable to set password with reset-password endpoint (same error) .As mentioned in the documents,I have set the enabled property of userRepresentation to true. Keycloak version : 12.0.4 ,Spring boot version : 2.1.6.RELEASE I tried to read the entity from the response received, but failed in that too. Any help to figure out the issue will e appreciated. // Code for usercreation

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());

Code for CredentialRepresentation :

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

There are 1 best solutions below

0
On

I just want to update the real cause behind this issue,The server I used was of old version ,and the issue got fixed when tested against latest keycloak server. Thank you for the support guys :)