-
-
Save thomasdarimont/43689aefb37540624e35 to your computer and use it in GitHub Desktop.
| package de.tdlabs.training.keycloak; | |
| import static java.util.Arrays.asList; | |
| import javax.ws.rs.core.Response; | |
| import org.jboss.resteasy.client.jaxrs.ResteasyClientBuilder; | |
| import org.keycloak.admin.client.Keycloak; | |
| import org.keycloak.admin.client.KeycloakBuilder; | |
| import org.keycloak.representations.idm.CredentialRepresentation; | |
| import org.keycloak.representations.idm.UserRepresentation; | |
| public class KeycloakAdminClientExample { | |
| public static void main(String[] args) throws Exception { | |
| Keycloak kc = KeycloakBuilder.builder() // | |
| .serverUrl("http://localhost:8081/auth") // | |
| .realm("rest-example")// | |
| .username("rest-user-admin") // | |
| .password("password") // | |
| .clientId("admin-cli") // | |
| .resteasyClient(new ResteasyClientBuilder().connectionPoolSize(10).build()) // | |
| .build(); | |
| CredentialRepresentation credential = new CredentialRepresentation(); | |
| credential.setType(CredentialRepresentation.PASSWORD); | |
| credential.setValue("test123"); | |
| credential.setTemporary(false); | |
| UserRepresentation user = new UserRepresentation(); | |
| user.setUsername("testuser"); | |
| user.setFirstName("Test"); | |
| user.setLastName("User"); | |
| user.setCredentials(asList(credential)); | |
| user.setEnabled(true); | |
| user.setRealmRoles(asList("admin")); | |
| // Create testuser | |
| Response result = kc.realm("rest-example").users().create(user); | |
| if (result.getStatus() != 201) { | |
| System.err.println("Couldn't create user."); | |
| System.exit(0); | |
| } | |
| System.out.println("Testuser created.... verify in keycloak!"); | |
| System.out.println("Press any key..."); | |
| System.in.read(); | |
| // Delete testuser | |
| String locationHeader = result.getHeaderString("Location"); | |
| String userId = locationHeader.replaceAll(".*/(.*)$", "$1"); | |
| kc.realm("rest-example").users().get(userId).remove(); | |
| } | |
| } |
| <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" | |
| xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> | |
| <modelVersion>4.0.0</modelVersion> | |
| <groupId>de.tdlabs</groupId> | |
| <artifactId>keycloak-training-rest-api-example</artifactId> | |
| <version>0.0.1-SNAPSHOT</version> | |
| <properties> | |
| <maven.compiler.source>1.8</maven.compiler.source> | |
| <maven.compiler.target>1.8</maven.compiler.target> | |
| <keycloak.version>1.8.0.CR1-SNAPSHOT</keycloak.version> | |
| <resteasy.version>3.0.9.Final</resteasy.version> | |
| </properties> | |
| <dependencies> | |
| <dependency> | |
| <groupId>org.keycloak</groupId> | |
| <artifactId>keycloak-admin-client</artifactId> | |
| <version>${keycloak.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.jboss.resteasy</groupId> | |
| <artifactId>jaxrs-api</artifactId> | |
| <version>${resteasy.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.jboss.resteasy</groupId> | |
| <artifactId>resteasy-client</artifactId> | |
| <version>${resteasy.version}</version> | |
| </dependency> | |
| <dependency> | |
| <groupId>org.jboss.resteasy</groupId> | |
| <artifactId>resteasy-jackson-provider</artifactId> | |
| <version>${resteasy.version}</version> | |
| </dependency> | |
| </dependencies> | |
| </project> |
@harshmahey you should not use a SNAPSHOT version in your pom. Use a release version like 2.5.4.Final
Note that the rest-user-admin user needs to have the "manage-user" (and potentially view-clients) role for the realm-management client.
@thomasdarimont thanks for this client example. Do you now how can I send email when user is created into keycloak? Keycloak should send a automatic email to the new user, right?
Hi @thomasdarimont thanks, I'm using userRessource.get(userId).executeActionsEmail to send the email. I don't know if it is the best solution but it is working.
Hi @thomasdarimont thanks for client example. Do you know , how to get the exact validation message in failed user creation like email already exist, or username already exist or password pattern does not match.
Hello @thomasdarimont thanks for this client example. When i try to run it i get a HTTP 400 Bad Request can you help me ??
I was receiving jackson error while running this sample. It got resolved when i used - <artifactId/>resteasy-jackson2-provide</artifactId>
Kc version - 3.4.3.Final
hey this is giving me this error - (default task-1) Uncaught server error: java.lang.IllegalArgumentException: interface org.keycloak.admin.client.token.TokenService is not visible from class loader
any help ?
Is there anyway to use the Client API not the REST ADMIN API and still be able to use a JSON config to create a new realm as we would with a POST to the RestAdminAPI?
Realm Role not getting created....i think user.setRealmRole("rolename") not working
Take a look at this example: https://gist.github.com/thomasdarimont/c4e739c5a319cf78a4cff3b87173a84b
Roles need to be set explicitly.
It runs outside server ?
When i trying this , i am getting the error ," Could not find artifact org.keycloak:keycloak-admin-client:jar:1.8.0.CR1-SNAPSHOT -> [Help 1]
"
I also tried other higher version and it starts failing on resteasy.