Skip to content

Commit

Permalink
bumped Keycloak to v22
Browse files Browse the repository at this point in the history
  • Loading branch information
kilmajster committed Sep 1, 2023
1 parent 732dc8f commit 9fe4201
Show file tree
Hide file tree
Showing 9 changed files with 1,895 additions and 1,837 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -158,7 +158,7 @@ After building a project, do following to start Keycloak with bundled authentica
```shell
$ docker-compose up --build
```
Open browser and go to http://localhost:8081/auth/realms/dev-realm/account
Open browser and go to http://localhost:8080/auth/realms/dev-realm/account
use _Username or email_ = `test`, _Password_ = `test` and _Foot size_ = `46` to login.

##### Debug in docker with IntelliJ
Expand Down
14 changes: 5 additions & 9 deletions docker-compose.yml
Original file line number Diff line number Diff line change
@@ -1,20 +1,16 @@
version: '3'

services:
keycloak:
keycloak-dev:
image: kilmajster/keycloak-with-authenticator:test
container_name: keycloak-dev
build:
context: .
dockerfile: src/main/docker/dev.Dockerfile
ports:
- 8081:8080
- 8787:8787
volumes:
- ./src/test/resources/dev-realm.json:/tmp/dev-realm.json
- '8080:8080'
- '8787:8787'
environment:
DEBUG: 'true'
DEBUG_PORT: '*:8787'
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin
KEYCLOAK_IMPORT: /tmp/dev-realm.json
KEYCLOAK_ADMIN: admin
KEYCLOAK_ADMIN_PASSWORD: admin
41 changes: 14 additions & 27 deletions pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -59,19 +59,19 @@
<properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<maven.compiler.source>11</maven.compiler.source>
<maven.compiler.target>11</maven.compiler.target>
<maven.compiler.source>17</maven.compiler.source>
<maven.compiler.target>17</maven.compiler.target>

<keycloak.version>16.1.1</keycloak.version>
<keycloak.version>22.0.1</keycloak.version>

<!-- test dependencies versions -->
<assertj.version>3.19.0</assertj.version>
<cucumber.version>6.10.4</cucumber.version>
<cucumber.version>7.13.0</cucumber.version>
<junit.version>4.13.2</junit.version>
<selenium-chrome-driver.version>3.141.59</selenium-chrome-driver.version>
<selenide.version>5.21.0</selenide.version>
<testcontainers.version>1.15.3</testcontainers.version>
<testcontainers-keycloak.version>1.7.0</testcontainers-keycloak.version>
<selenium-chrome-driver.version>4.11.0</selenium-chrome-driver.version>
<selenide.version>6.17.2</selenide.version>
<testcontainers-keycloak.version>3.0.0</testcontainers-keycloak.version>
<testcontainers.version>1.18.3</testcontainers.version>

<!-- plugins versions -->
<maven-compiler-plugin.version>3.8.1</maven-compiler-plugin.version>
Expand Down Expand Up @@ -114,7 +114,6 @@
<scope>provided</scope>
</dependency>


<!-- test dependencies -->
<dependency>
<groupId>junit</groupId>
Expand Down Expand Up @@ -170,26 +169,14 @@
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>2.0.7</version>
<scope>test</scope>
</dependency>
</dependencies>

<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>${maven-jar-plugin.version}</version>
<configuration>
<archive>
<manifestEntries>
<Dependencies>
<![CDATA[org.keycloak.keycloak-server-spi,org.keycloak.keycloak-server-spi-private,org.keycloak.keycloak-services]]>
</Dependencies>
</manifestEntries>
</archive>
</configuration>
</plugin>
</plugins>
</build>
<profiles>
<profile>
<id>automation-tests</id>
Expand Down
10 changes: 8 additions & 2 deletions src/main/docker/dev.Dockerfile
Original file line number Diff line number Diff line change
@@ -1,5 +1,11 @@
FROM jboss/keycloak:16.1.1
FROM quay.io/keycloak/keycloak:22.0.1

ARG VERSION=SNAPSHOT

ADD target/keycloak-username-password-attribute-authenticator-${VERSION}.jar /opt/jboss/keycloak/standalone/deployments
ADD target/keycloak-username-password-attribute-authenticator-${VERSION}.jar /opt/keycloak/providers
ADD src/test/resources/dev-realm.json /opt/keycloak/data/import/dev-realm.json

ENV KC_PROXY=edge
ENV KC_HTTP_PORT=8080

ENTRYPOINT ["/opt/keycloak/bin/kc.sh", "--verbose", "start-dev", "--import-realm"]
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
package io.github.kilmajster.keycloak;

import io.github.kilmajster.keycloak.ui.UserAttributeLabelGenerator;
import jakarta.ws.rs.core.MultivaluedMap;
import jakarta.ws.rs.core.Response;
import org.jboss.resteasy.specimpl.MultivaluedMapImpl;
import org.keycloak.authentication.AuthenticationFlowContext;
import org.keycloak.authentication.AuthenticationFlowError;
Expand All @@ -19,8 +21,6 @@
import org.keycloak.services.messages.Messages;
import org.keycloak.services.validation.Validation;

import javax.ws.rs.core.MultivaluedMap;
import javax.ws.rs.core.Response;

import static io.github.kilmajster.keycloak.UsernamePasswordAttributeFormConfiguration.*;

Expand Down Expand Up @@ -97,7 +97,7 @@ protected boolean validateForm(AuthenticationFlowContext context, MultivaluedMap
context.clearUser();
UserModel user = getUser(context, formData);
return user != null
&& validatePassword(context, user, formData) && validateUser(context, user, formData)
&& validatePassword(context, user, formData, true) && validateUser(context, user, formData)
&& validateUserAttribute(context, user, formData);
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,8 @@
package io.github.kilmajster.keycloak;

import org.keycloak.Config;
import org.keycloak.OAuth2Constants;
import org.keycloak.authentication.Authenticator;
import org.keycloak.authentication.AuthenticatorFactory;
import org.keycloak.authentication.DisplayTypeAuthenticatorFactory;
import org.keycloak.authentication.authenticators.console.ConsoleUsernamePasswordAuthenticator;
import org.keycloak.models.AuthenticationExecutionModel;
import org.keycloak.models.KeycloakSession;
import org.keycloak.models.KeycloakSessionFactory;
Expand All @@ -14,7 +11,7 @@

import java.util.List;

public class UsernamePasswordAttributeFormFactory implements AuthenticatorFactory, DisplayTypeAuthenticatorFactory {
public class UsernamePasswordAttributeFormFactory implements AuthenticatorFactory {

public static final String PROVIDER_ID = "auth-username-password-attr-form";
public static final UsernamePasswordAttributeForm SINGLETON = new UsernamePasswordAttributeForm();
Expand All @@ -29,13 +26,6 @@ public List<ProviderConfigProperty> getConfigProperties() {
return UsernamePasswordAttributeFormConfiguration.PROPS;
}

@Override
public Authenticator createDisplay(KeycloakSession session, String displayType) {
if (displayType == null) return SINGLETON;
if (!OAuth2Constants.DISPLAY_CONSOLE.equalsIgnoreCase(displayType)) return null;
return ConsoleUsernamePasswordAuthenticator.SINGLETON;
}

@Override
public void init(Config.Scope config) {

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -15,19 +15,29 @@
import static com.codeborne.selenide.Condition.text;
import static com.codeborne.selenide.Selenide.$;
import static com.codeborne.selenide.Selenide.open;
import static io.github.kilmajster.keycloak.TestConstants.*;
import static org.assertj.core.api.Assertions.assertThat;

public final class KeycloakSteps {
public final class CucumberKeycloakSteps {

private static final Logger log = LoggerFactory.getLogger(KeycloakSteps.class);
private static final Logger log = LoggerFactory.getLogger(CucumberKeycloakSteps.class);

private final KeycloakContainer keycloak = new KeycloakContainer(KEYCLOAK_DEV_DOCKER_IMAGE)
String KEYCLOAK_DEV_DOCKER_IMAGE = "kilmajster/keycloak-with-authenticator:test";
String KEYCLOAK_LOCAL_URL_PREFIX = "http://localhost:";

String TEST_USERNAME = "test";
String TEST_PASSWORD = "test";

private final KeycloakContainer keycloak = new KeycloakContainer()
.withRealmImportFile("dev-realm.json")
.withProviderClassesFrom("target/classes")
.withLogConsumer(new Slf4jLogConsumer(log));

@Given("keycloak is running with default setup")
public void keycloak_is_running_with_default_setup() {
// WebDriverRunner.setWebDriver(FirefoxDriver.builder().build());

// open("https://www.google.pl");

if (!keycloak.isRunning()) {
log.info("Starting keycloak container...");
keycloak.start();
Expand All @@ -45,11 +55,11 @@ public void keycloak_is_running_with_env(final String envKey, final String envVa

@When("user goes to the account console page")
public void go_to_keycloak_account_page() {
final String keycloakUrl = TestConstants.KEYCLOAK_LOCAL_URL_PREFIX + keycloak.getFirstMappedPort();
final String keycloakUrl = KEYCLOAK_LOCAL_URL_PREFIX + keycloak.getHttpsPort();

log.info("go_to_keycloak_account_page() :: keycloakUrl = " + keycloakUrl);

open(keycloakUrl + "/auth/realms/dev-realm/account");
open(keycloakUrl + "/realms/dev-realm/account");
}

@Then("user should be not logged in")
Expand Down

This file was deleted.

Loading

0 comments on commit 9fe4201

Please sign in to comment.