Skip to content

Commit

Permalink
upgrade to kc25
Browse files Browse the repository at this point in the history
  • Loading branch information
dasniko committed Jun 10, 2024
1 parent 4eeb3e7 commit a52df84
Show file tree
Hide file tree
Showing 11 changed files with 67 additions and 22 deletions.
4 changes: 3 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,9 @@ Demos, examples and playground for [Keycloak](https://www.keycloak.org) extensio

[![CI build](https://github.com/dasniko/keycloak-extensions-demo/actions/workflows/maven.yml/badge.svg)](https://github.com/dasniko/keycloak-extensions-demo/actions/workflows/maven.yml)
![](https://img.shields.io/github/license/dasniko/keycloak-extensions-demo?label=License)
![](https://img.shields.io/badge/Keycloak-24.0-blue)
![](https://img.shields.io/badge/Keycloak-25.0-blue)

>Provided _AS-IS_ - no warranties, no guarantees. Just for demonstration purposes only!
This repository contains the following extensions, and probably (most likely 😉) more...

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -139,7 +139,7 @@ private String getActionTokenUrl(CustomActionToken token) {

// now do the work
String tokenString = token.serialize(session, realm, uriInfo);
UriBuilder uriBuilder = Urls.actionTokenBuilder(uriInfo.getBaseUri(), tokenString, token.issuedFor, "");
UriBuilder uriBuilder = Urls.actionTokenBuilder(uriInfo.getBaseUri(), tokenString, token.issuedFor, "", "");

// and then reset the realm to the proper one
session.getContext().setRealm(sessionContextRealm);
Expand Down
3 changes: 2 additions & 1 deletion conditional-authenticators/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
<dependency>
<groupId>dasniko.keycloak</groupId>
<artifactId>keycloak-utils</artifactId>
<version>${project.parent.version}</version>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
Expand Down
4 changes: 4 additions & 0 deletions event-listener/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,10 @@
<groupId>org.keycloak</groupId>
<artifactId>keycloak-model-storage-private</artifactId>
</dependency>
<dependency>
<groupId>io.quarkus</groupId>
<artifactId>quarkus-resteasy-reactive</artifactId>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
Expand Down
2 changes: 1 addition & 1 deletion flintstones-userprovider/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -38,7 +38,7 @@
<groupId>dasniko.keycloak</groupId>
<artifactId>keycloak-utils</artifactId>
<version>${project.version}</version>
<scope>test</scope>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,22 +5,21 @@
import dasniko.keycloak.user.flintstones.repo.FlintstoneUser;
import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.apache.http.impl.client.CloseableHttpClient;
import org.keycloak.broker.provider.util.SimpleHttp;
import org.keycloak.broker.provider.util.SimpleHttpClient;
import org.keycloak.component.ComponentModel;
import org.keycloak.connections.httpclient.HttpClientProvider;
import org.keycloak.models.KeycloakSession;

import java.util.List;

@Slf4j
public class FlintstonesApiClient {

private final CloseableHttpClient httpClient;
private final KeycloakSession session;
private final String baseUrl;

public FlintstonesApiClient(KeycloakSession session, ComponentModel model) {
this.httpClient = session.getProvider(HttpClientProvider.class).getHttpClient();
this.session = session;
this.baseUrl = model.get(FlintstonesUserStorageProviderFactory.USER_API_BASE_URL);
}

Expand Down Expand Up @@ -50,7 +49,7 @@ public Integer usersCount() {
@SneakyThrows
public boolean createUser(FlintstoneUser user) {
String url = String.format("%s/users", baseUrl);
return SimpleHttp.doPost(url, httpClient).json(user).asStatus() == 201;
return SimpleHttpClient.doPost(url, session).json(user).asStatus() == 201;
}

@SneakyThrows
Expand Down Expand Up @@ -84,25 +83,25 @@ private FlintstoneUser getUserByUsernameOrEmail(String field, String value) {
@SneakyThrows
public boolean updateUser(FlintstoneUser user) {
String url = String.format("%s/users/%s", baseUrl, user.getId());
return SimpleHttp.doPut(url, httpClient).json(user).asStatus() == 204;
return SimpleHttpClient.doPut(url, session).json(user).asStatus() == 204;
}

@SneakyThrows
public boolean deleteUser(String userId) {
String url = String.format("%s/users/%s", baseUrl, userId);
return SimpleHttp.doDelete(url, httpClient).asStatus() == 204;
return SimpleHttpClient.doDelete(url, session).asStatus() == 204;
}

@SneakyThrows
public boolean verifyCredentials(String userId, Credential credential) {
String url = String.format("%s/users/%s/credentials/verify", baseUrl, userId);
return SimpleHttp.doPost(url, httpClient).json(credential).asStatus() == 204;
return SimpleHttpClient.doPost(url, session).json(credential).asStatus() == 204;
}

@SneakyThrows
public boolean updateCredentials(String userId, Credential credential) {
String url = String.format("%s/users/%s/credentials", baseUrl, userId);
return SimpleHttp.doPut(url, httpClient).json(credential).asStatus() == 204;
return SimpleHttpClient.doPut(url, session).json(credential).asStatus() == 204;
}

@SneakyThrows
Expand All @@ -122,6 +121,6 @@ public List<FlintstoneUser> searchGroupMembers(String name, int first, int max)
}

private SimpleHttp prepareGetRequest(String url) {
return SimpleHttp.doGet(url, httpClient).acceptJson();
return SimpleHttpClient.doGet(url, session).acceptJson();
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -59,7 +59,7 @@ public class FlintstonesUserStorageProviderTest extends TestBase {
private static final KeycloakContainer keycloak = new KeycloakContainer()
.withEnv("KC_SPI_EVENTS_LISTENER_JBOSS_LOGGING_SUCCESS_LEVEL", "info")
.withEnv("KC_LOG_LEVEL", "INFO,dasniko:debug")
.withProviderClassesFrom("target/classes");
.withProviderClassesFrom("target/classes", "../utils/target/classes");

@BeforeAll
static void beforeAll() {
Expand Down
3 changes: 2 additions & 1 deletion mfa-authenticator/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,8 @@
<dependency>
<groupId>dasniko.keycloak</groupId>
<artifactId>keycloak-utils</artifactId>
<version>${project.parent.version}</version>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>dasniko.keycloak</groupId>
Expand Down
1 change: 1 addition & 0 deletions passkey/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@
<groupId>dasniko.keycloak</groupId>
<artifactId>keycloak-utils</artifactId>
<version>${project.version}</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.keycloak</groupId>
Expand Down
11 changes: 5 additions & 6 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,6 @@
<module>event-listener</module>
<module>tokenmapper</module>
<module>flintstones-userprovider</module>
<module>peanuts-userprovider</module>
<module>rest-endpoint</module>
<module>requiredaction</module>
<module>magiclink</module>
Expand All @@ -25,7 +24,7 @@
<module>conditional-authenticators</module>
<module>mfa-authenticator</module>
<module>passkey</module>
<module>initializer</module>
<module>initializer</module>
<module>actiontoken</module>
<module>admin-ui</module>
<module>scheduled-task</module>
Expand All @@ -35,11 +34,11 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<aws.version>2.17.209</aws.version>
<bytebuddy.version>1.14.11</bytebuddy.version>
<keycloak.version>24.0.3</keycloak.version>
<maven.compiler.version>3.11.0</maven.compiler.version>
<keycloak.version>25.0.0</keycloak.version>
<maven.compiler.version>3.13.0</maven.compiler.version>
<maven.compiler.release>17</maven.compiler.release>
<maven-shade.version>3.2.4</maven-shade.version>
<maven-surefire.version>3.1.2</maven-surefire.version>
<maven-shade.version>3.6.0</maven-shade.version>
<maven-surefire.version>3.2.5</maven-surefire.version>
</properties>

<dependencyManagement>
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
package org.keycloak.broker.provider.util;

import org.keycloak.connections.httpclient.HttpClientProvider;
import org.keycloak.models.KeycloakSession;

public class SimpleHttpClient {

public static SimpleHttp doGet(String url, KeycloakSession session) {
HttpClientProvider provider = session.getProvider(HttpClientProvider.class);
return SimpleHttp.doGet(url, provider.getHttpClient(), provider.getMaxConsumedResponseSize());
}

public static SimpleHttp doPost(String url, KeycloakSession session) {
HttpClientProvider provider = session.getProvider(HttpClientProvider.class);
return SimpleHttp.doPost(url, provider.getHttpClient(), provider.getMaxConsumedResponseSize());
}

public static SimpleHttp doPut(String url, KeycloakSession session) {
HttpClientProvider provider = session.getProvider(HttpClientProvider.class);
return SimpleHttp.doPut(url, provider.getHttpClient(), provider.getMaxConsumedResponseSize());
}

public static SimpleHttp doPatch(String url, KeycloakSession session) {
HttpClientProvider provider = session.getProvider(HttpClientProvider.class);
return SimpleHttp.doPatch(url, provider.getHttpClient(), provider.getMaxConsumedResponseSize());
}

public static SimpleHttp doDelete(String url, KeycloakSession session) {
HttpClientProvider provider = session.getProvider(HttpClientProvider.class);
return SimpleHttp.doDelete(url, provider.getHttpClient(), provider.getMaxConsumedResponseSize());
}

public static SimpleHttp doHead(String url, KeycloakSession session) {
HttpClientProvider provider = session.getProvider(HttpClientProvider.class);
return SimpleHttp.doHead(url, provider.getHttpClient(), provider.getMaxConsumedResponseSize());
}

}

0 comments on commit a52df84

Please sign in to comment.