Forked from thomasdarimont/KeycloakAdminClientExample.java
Created
July 27, 2021 12:54
-
-
Save enterprisesoftwaresolutions/71bd279f10ed4b006cc3bcbce77921e1 to your computer and use it in GitHub Desktop.
Revisions
-
thomasdarimont revised this gist
Mar 2, 2020 . 1 changed file with 2 additions and 5 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -2,14 +2,11 @@ <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>com.github.thomasdarimont.keycloak</groupId> <artifactId>keycloak-admin-client-example</artifactId> <version>1.0.0.0-SNAPSHOT</version> <properties> <keycloak.version>8.0.2</keycloak.version> -
thomasdarimont revised this gist
Mar 2, 2020 . 1 changed file with 40 additions and 0 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,40 @@ <?xml version="1.0" encoding="UTF-8"?> <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"> <parent> <artifactId>keycloak-demos</artifactId> <groupId>com.github.thomasdarimont.keycloak</groupId> <version>1.0.0.0-SNAPSHOT</version> </parent> <modelVersion>4.0.0</modelVersion> <artifactId>keycloak-admin-client-example</artifactId> <properties> <keycloak.version>8.0.2</keycloak.version> <resteasy.version>3.9.1.Final</resteasy.version> </properties> <dependencies> <dependency> <artifactId>keycloak-admin-client</artifactId> <groupId>org.keycloak</groupId> <version>${keycloak.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-jackson2-provider</artifactId> <version>${resteasy.version}</version> </dependency> </dependencies> </project> -
thomasdarimont revised this gist
Feb 28, 2020 . 1 changed file with 83 additions and 72 deletions.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -1,28 +1,30 @@ package demo.plain; import org.keycloak.OAuth2Constants; import org.keycloak.admin.client.CreatedResponseUtil; import org.keycloak.admin.client.Keycloak; import org.keycloak.admin.client.KeycloakBuilder; import org.keycloak.admin.client.resource.RealmResource; import org.keycloak.admin.client.resource.UserResource; import org.keycloak.admin.client.resource.UsersResource; import org.keycloak.representations.idm.ClientRepresentation; import org.keycloak.representations.idm.CredentialRepresentation; import org.keycloak.representations.idm.RoleRepresentation; import org.keycloak.representations.idm.UserRepresentation; import javax.ws.rs.core.Response; import java.util.Arrays; import java.util.Collections; public class KeycloakAdminClientExample { public static void main(String[] args) { String serverUrl = "http://sso.tdlabs.local:8899/u/auth"; String realm = "acme"; // idm-client needs to allow "Direct Access Grants: Resource Owner Password Credentials Grant" String clientId = "idm-client"; String clientSecret = "0d61686d-57fc-4048-b052-4ce74978c468"; // // Client "idm-client" needs service-account with at least "manage-users, view-clients, view-realm, view-users" roles for "realm-management" // Keycloak keycloak = KeycloakBuilder.builder() // @@ -32,65 +34,74 @@ public static void main(String[] args) { // .clientId(clientId) // // .clientSecret(clientSecret).build(); // User "idm-admin" needs at least "manage-users, view-clients, view-realm, view-users" roles for "realm-management" Keycloak keycloak = KeycloakBuilder.builder() // .serverUrl(serverUrl) // .realm(realm) // .grantType(OAuth2Constants.PASSWORD) // .clientId(clientId) // .clientSecret(clientSecret) // .username("idm-admin") // .password("admin") // .build(); // Define user UserRepresentation user = new UserRepresentation(); user.setEnabled(true); user.setUsername("tester1"); user.setFirstName("First"); user.setLastName("Last"); user.setEmail("[email protected]"); user.setAttributes(Collections.singletonMap("origin", Arrays.asList("demo"))); // Get realm RealmResource realmResource = keycloak.realm(realm); UsersResource usersRessource = realmResource.users(); // Create user (requires manage-users role) Response response = usersRessource.create(user); System.out.printf("Repsonse: %s %s%n", response.getStatus(), response.getStatusInfo()); System.out.println(response.getLocation()); String userId = CreatedResponseUtil.getCreatedId(response); System.out.printf("User created with userId: %s%n", userId); // Define password credential CredentialRepresentation passwordCred = new CredentialRepresentation(); passwordCred.setTemporary(false); passwordCred.setType(CredentialRepresentation.PASSWORD); passwordCred.setValue("test"); UserResource userResource = usersRessource.get(userId); // Set password credential userResource.resetPassword(passwordCred); // // Get realm role "tester" (requires view-realm role) RoleRepresentation testerRealmRole = realmResource.roles()// .get("tester").toRepresentation(); // // // Assign realm role tester to user userResource.roles().realmLevel() // .add(Arrays.asList(testerRealmRole)); // // // Get client ClientRepresentation app1Client = realmResource.clients() // .findByClientId("app-frontend-springboot").get(0); // // // Get client level role (requires view-clients role) RoleRepresentation userClientRole = realmResource.clients().get(app1Client.getId()) // .roles().get("user").toRepresentation(); // // // Assign client level role to user userResource.roles() // .clientLevel(app1Client.getId()).add(Arrays.asList(userClientRole)); // Send password reset E-Mail // VERIFY_EMAIL, UPDATE_PROFILE, CONFIGURE_TOTP, UPDATE_PASSWORD, TERMS_AND_CONDITIONS // usersRessource.get(userId).executeActionsEmail(Arrays.asList("UPDATE_PASSWORD")); // Delete User // userResource.remove(); } } -
thomasdarimont revised this gist
Mar 27, 2017 . 1 changed file with 1 addition and 1 deletion.There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -32,7 +32,7 @@ public static void main(String[] args) { // .clientId(clientId) // // .clientSecret(clientSecret).build(); // User "idm-admin" needs at least "manage-users, view-clients, view-realm, view-users" roles for "realm-management" Keycloak keycloak = KeycloakBuilder.builder() // .serverUrl(serverUrl) // .realm(realm) // -
thomasdarimont created this gist
Mar 27, 2017 .There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters. Learn more about bidirectional Unicode charactersOriginal file line number Diff line number Diff line change @@ -0,0 +1,96 @@ package de.tdlabs.keycloak.client; import java.util.Arrays; import java.util.Collections; import javax.ws.rs.core.Response; import org.keycloak.OAuth2Constants; import org.keycloak.admin.client.Keycloak; import org.keycloak.admin.client.KeycloakBuilder; import org.keycloak.admin.client.resource.RealmResource; import org.keycloak.admin.client.resource.UsersResource; import org.keycloak.representations.idm.ClientRepresentation; import org.keycloak.representations.idm.CredentialRepresentation; import org.keycloak.representations.idm.RoleRepresentation; import org.keycloak.representations.idm.UserRepresentation; public class KeycloakAdminClientExample { public static void main(String[] args) { String serverUrl = "http://localhost:8080/auth"; String realm = "demo"; String clientId = "idm-client"; String clientSecret = "a200cdf6-ad72-4f6c-af73-5b8e1cc48876"; // // Client "idm-client" needs service-account with at least "manage-users, view-clients, view-realm, view-users" roles for "realm-management" // Keycloak keycloak = KeycloakBuilder.builder() // // .serverUrl(serverUrl) // // .realm(realm) // // .grantType(OAuth2Constants.CLIENT_CREDENTIALS) // // .clientId(clientId) // // .clientSecret(clientSecret).build(); // User "javaland" needs at least "manage-users, view-clients, view-realm, view-users" roles for "realm-management" Keycloak keycloak = KeycloakBuilder.builder() // .serverUrl(serverUrl) // .realm(realm) // .grantType(OAuth2Constants.PASSWORD) // .clientId(clientId) // .clientSecret(clientSecret) // .username("idm-admin") // .password("admin") // .build(); // Define user UserRepresentation user = new UserRepresentation(); user.setEnabled(true); user.setUsername("tester1"); user.setFirstName("First"); user.setLastName("Last"); user.setEmail("[email protected]"); user.setAttributes(Collections.singletonMap("origin", Arrays.asList("demo"))); // Get realm RealmResource realmResource = keycloak.realm(realm); UsersResource userRessource = realmResource.users(); // Create user (requires manage-users role) Response response = userRessource.create(user); System.out.println("Repsonse: " + response.getStatusInfo()); System.out.println(response.getLocation()); String userId = response.getLocation().getPath().replaceAll(".*/([^/]+)$", "$1"); System.out.printf("User created with userId: %s%n", userId); // Get realm role "tester" (requires view-realm role) RoleRepresentation testerRealmRole = realmResource.roles()// .get("tester").toRepresentation(); // Assign realm role tester to user userRessource.get(userId).roles().realmLevel() // .add(Arrays.asList(testerRealmRole)); // Get client ClientRepresentation app1Client = realmResource.clients() // .findByClientId("app-javaee-petclinic").get(0); // Get client level role (requires view-clients role) RoleRepresentation userClientRole = realmResource.clients().get(app1Client.getId()) // .roles().get("user").toRepresentation(); // Assign client level role to user userRessource.get(userId).roles() // .clientLevel(app1Client.getId()).add(Arrays.asList(userClientRole)); // Define password credential CredentialRepresentation passwordCred = new CredentialRepresentation(); passwordCred.setTemporary(false); passwordCred.setType(CredentialRepresentation.PASSWORD); passwordCred.setValue("test"); // Set password credential userRessource.get(userId).resetPassword(passwordCred); } }