Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
Some Keycloak client examples
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

This comment has been minimized.

Copy link

harshmahey commented Sep 2, 2016

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.

@rockydcoder

This comment has been minimized.

Copy link

rockydcoder commented Mar 16, 2017

@harshmahey you should not use a SNAPSHOT version in your pom. Use a release version like 2.5.4.Final

@thomasdarimont

This comment has been minimized.

Copy link
Owner Author

thomasdarimont commented Sep 27, 2017

Note that the rest-user-admin user needs to have the "manage-user" (and potentially view-clients) role for the realm-management client.

@alvaroqv

This comment has been minimized.

Copy link

alvaroqv commented Dec 13, 2017

@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?

@alvaroqv

This comment has been minimized.

Copy link

alvaroqv commented Dec 13, 2017

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.

@amit-tarento

This comment has been minimized.

Copy link

amit-tarento commented Feb 27, 2018

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.

@maherBoudhraa

This comment has been minimized.

Copy link

maherBoudhraa commented Mar 22, 2018

Hello @thomasdarimont thanks for this client example. When i try to run it i get a HTTP 400 Bad Request can you help me ??

@chittaa

This comment has been minimized.

Copy link

chittaa commented Apr 26, 2018

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

@Stalluri1

This comment has been minimized.

Copy link

Stalluri1 commented May 8, 2019

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 ?

@charStarGoulash

This comment has been minimized.

Copy link

charStarGoulash commented May 24, 2019

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?

@VenkateshGuntuk

This comment has been minimized.

Copy link

VenkateshGuntuk commented Jul 12, 2019

Realm Role not getting created....i think user.setRealmRole("rolename") not working

@thomasdarimont

This comment has been minimized.

Copy link
Owner Author

thomasdarimont commented Jul 12, 2019

Take a look at this example: https://gist.github.com/thomasdarimont/c4e739c5a319cf78a4cff3b87173a84b
Roles need to be set explicitly.

@canattofilipe

This comment has been minimized.

Copy link

canattofilipe commented Jun 12, 2020

It runs outside server ?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.