Bump org.keycloak:keycloak-quarkus-server from 22.0.2 to 22.0.3 (#57)
* Bump org.keycloak:keycloak-quarkus-server from 22.0.2 to 22.0.3 Bumps org.keycloak:keycloak-quarkus-server from 22.0.2 to 22.0.3. --- updated-dependencies: - dependency-name: org.keycloak:keycloak-quarkus-server dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * Use java http client because keycloak api in incompatible --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: Stephan Schnabel <stephan.schnabel@posteo.de>
This commit is contained in:
parent
79fada6ce8
commit
fab113d912
5 changed files with 56 additions and 35 deletions
|
@ -1,7 +1,14 @@
|
|||
package io.kokuwa.keycloak.metrics.junit;
|
||||
|
||||
import static org.junit.jupiter.api.Assertions.assertEquals;
|
||||
import static org.junit.jupiter.api.Assertions.fail;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.net.URI;
|
||||
import java.net.http.HttpClient;
|
||||
import java.net.http.HttpRequest;
|
||||
import java.net.http.HttpRequest.BodyPublishers;
|
||||
import java.net.http.HttpResponse.BodyHandlers;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.UUID;
|
||||
|
@ -9,12 +16,16 @@ import java.util.UUID;
|
|||
import org.keycloak.OAuth2Constants;
|
||||
import org.keycloak.admin.client.Keycloak;
|
||||
import org.keycloak.admin.client.token.TokenService;
|
||||
import org.keycloak.representations.AccessTokenResponse;
|
||||
import org.keycloak.representations.idm.ClientRepresentation;
|
||||
import org.keycloak.representations.idm.CredentialRepresentation;
|
||||
import org.keycloak.representations.idm.RealmRepresentation;
|
||||
import org.keycloak.representations.idm.UserRepresentation;
|
||||
|
||||
import jakarta.ws.rs.NotAuthorizedException;
|
||||
import com.fasterxml.jackson.databind.ObjectMapper;
|
||||
|
||||
import jakarta.ws.rs.core.HttpHeaders;
|
||||
import jakarta.ws.rs.core.MediaType;
|
||||
import jakarta.ws.rs.core.MultivaluedHashMap;
|
||||
|
||||
/**
|
||||
|
@ -25,11 +36,18 @@ import jakarta.ws.rs.core.MultivaluedHashMap;
|
|||
public class KeycloakClient {
|
||||
|
||||
private final Keycloak keycloak;
|
||||
private final TokenService token;
|
||||
private final TokenService tokenService;
|
||||
|
||||
KeycloakClient(Keycloak keycloak, TokenService token) {
|
||||
private final ObjectMapper mapper = new ObjectMapper();
|
||||
private final HttpClient client = HttpClient.newHttpClient();
|
||||
private final String url;
|
||||
private final String adminToken;
|
||||
|
||||
KeycloakClient(String url, Keycloak keycloak, TokenService tokenService) {
|
||||
this.keycloak = keycloak;
|
||||
this.token = token;
|
||||
this.tokenService = tokenService;
|
||||
this.url = url;
|
||||
this.adminToken = login("admin-cli", "master", "admin", "password").getToken();
|
||||
}
|
||||
|
||||
public void createRealm(String realmName) {
|
||||
|
@ -52,18 +70,25 @@ public class KeycloakClient {
|
|||
}
|
||||
|
||||
public void createUser(String realmName, String username, String password) {
|
||||
var credential = new CredentialRepresentation();
|
||||
credential.setType(CredentialRepresentation.PASSWORD);
|
||||
credential.setValue(password);
|
||||
credential.setTemporary(false);
|
||||
var user = new UserRepresentation();
|
||||
user.setEnabled(true);
|
||||
user.setEmail(username + "@example.org");
|
||||
user.setEmailVerified(true);
|
||||
user.setUsername(username);
|
||||
user.setCredentials(List.of(credential));
|
||||
var response = keycloak.realms().realm(realmName).users().create(user);
|
||||
assertEquals(201, response.getStatus());
|
||||
try {
|
||||
var response = client.send(HttpRequest.newBuilder()
|
||||
.uri(URI.create(url + "/admin/realms/" + realmName + "/users"))
|
||||
.header(HttpHeaders.CONTENT_TYPE, MediaType.APPLICATION_JSON)
|
||||
.header(HttpHeaders.AUTHORIZATION, "Bearer " + adminToken)
|
||||
.POST(BodyPublishers.ofString(mapper.writeValueAsString(Map.of(
|
||||
"enabled", true,
|
||||
"emailVerified", true,
|
||||
"email", username + "@example.org",
|
||||
"username", username,
|
||||
"credentials", List.of(Map.of(
|
||||
"type", CredentialRepresentation.PASSWORD,
|
||||
"value", password,
|
||||
"temporary", false))))))
|
||||
.build(), BodyHandlers.ofString());
|
||||
assertEquals(201, response.statusCode(), "Body: " + response.body());
|
||||
} catch (IOException | InterruptedException e) {
|
||||
fail("Failed to create user", e);
|
||||
}
|
||||
}
|
||||
|
||||
public void deleteUser(String realmName, String username) {
|
||||
|
@ -73,16 +98,11 @@ public class KeycloakClient {
|
|||
.forEach(keycloak.realms().realm(realmName).users()::delete);
|
||||
}
|
||||
|
||||
public boolean login(String clientId, String realmName, String username, String password) {
|
||||
try {
|
||||
token.grantToken(realmName, new MultivaluedHashMap<>(Map.of(
|
||||
OAuth2Constants.CLIENT_ID, clientId,
|
||||
OAuth2Constants.GRANT_TYPE, OAuth2Constants.PASSWORD,
|
||||
OAuth2Constants.USERNAME, username,
|
||||
OAuth2Constants.PASSWORD, password)));
|
||||
return true;
|
||||
} catch (NotAuthorizedException e) {
|
||||
return false;
|
||||
}
|
||||
public AccessTokenResponse login(String clientId, String realmName, String username, String password) {
|
||||
return tokenService.grantToken(realmName, new MultivaluedHashMap<>(Map.of(
|
||||
OAuth2Constants.CLIENT_ID, clientId,
|
||||
OAuth2Constants.GRANT_TYPE, OAuth2Constants.PASSWORD,
|
||||
OAuth2Constants.USERNAME, username,
|
||||
OAuth2Constants.PASSWORD, password)));
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue