1. Einleitung
Oftmals wird die Single-Sign On Lösung Keycloak im Zusammenhang mit Java EE / Jakarta EE verwendet. Für die gängigsten Application Server wird ein Adapter angeboten, um die Verbindung zwischen dem Server und Keycloak herzustellen. Ich zeige euch in diesem Artikel, wie ihr den WildFly Application Server 21.0.0 innerhalb von Docker mit dem Keycloak Adapter 11.0.3 versorgt.
Das vollständige Dockerfile (wird von mir aktualisiert, sobald neue Versionen verfügbar sind) findest du auf GitHub: https://github.com/MatthiasPischka/dockering/blob/main/wildfly-keycloak/Dockerfile
2. Dockerfile
FROM jboss/wildfly:21.0.0.Final LABEL maintainer="Matthias Pischka, pischka-it.de" description="WildFly mit Keycloak Adapter" ENV KEYCLOAK_VERSION 11.0.3 ENV WILDFLY_HOME /opt/jboss/wildfly RUN cd $WILDFLY_HOME \ && curl -O https://downloads.jboss.org/keycloak/${KEYCLOAK_VERSION}/adapters/keycloak-oidc/keycloak-wildfly-adapter-dist-${KEYCLOAK_VERSION}.zip \ && unzip keycloak-wildfly-adapter-dist-${KEYCLOAK_VERSION}.zip -d . \ && rm keycloak-wildfly-adapter-dist-${KEYCLOAK_VERSION}.zip \ && bin/jboss-cli.sh --file=bin/adapter-elytron-install-offline.cli \ # Admin-User anlegen && bin/add-user.sh admin admin1234 --silent \ # Zu Vermeidung von Fehlermeldungen beim Start && rm -r standalone/configuration/standalone_xml_history/current/ CMD ["/opt/jboss/wildfly/bin/standalone.sh", "-b", "0.0.0.0", "-bmanagement", "0.0.0.0"] EXPOSE 8080 EXPOSE 9990
- FROM: Ich nutze hier das offizielle Image von jboss als Basis.
- ENV KEYCLOAK_VERSION: Die Version des Keycloak Adapters. Diese Variable macht das Dockerfile übersichtlicher und wartbar, denn die Version wird an mehreren Stellen verwendet.
- curl; unzip; rm: Zunächst wird der Adapter für den WildFly heruntergeladen, dann entpackt und anschließend wird die ursprüngliche Datei gelöscht.
- bin/jboss-cli.sh –file=bin/adapter-elytron-install-offline.cli: Der Adapter bringt ein Script zur Offline-Installation mit. Das heißt der Server muss zur Installation des Adapters nicht gestartet werden.
3. Bauen / Starten
Dazu zunächst in das Verzeichnis mit dem Dockerfile wechseln und anschließend folgenden Befehl ausführen:
docker build -t wildfly-keycloak:21.0.0-11.0.3 .
Jetzt kann von dem erzeugten Image ein Container erstellt und gestartet werden:
docker run -p 8080:8080 -p 9990:9990 --name wildfly-keycloak wildfly-keycloak:21.0.0-11.0.3
Nun sollte der WildFly über http://localhost:8080 erreichbar sein. Mit Klick auf Administration Console gelangst du zur Admin Console (admin/admin1234), wo die erfolgreiche Installation des Keycloak Adapters nachgeprüft werden kann. Hier sollte unter Configuration -> Subsystems der Bereich Keycloak erscheinen:
4. Ausblick
Ich werde ein weiteren Artikel verfassen: In diesem werde ich beschreiben, wie dieser Docker Container zusammen mit einem Keycloak Container hochgefahren und genutzt wird. Die Verlinkung folgt.
Des Weiteren werde ich mein lokal gebautes Image des hier gezeigten Dockerfiles demnächst ins offizielle Docker Hub pushen, sodass es nicht jeder selbst bauen muss. Auch dazu folgt der Link.
Update (26.08.2021)
- Ab jetzt ist der versprochene Beitrag zur Kombination von Keycloak und WildFly als Docker Container verfügbar: Docker Compose: WildFly Server mit Keycloak und Beispielanwendung
- Das gezeigte Image habe ich in der Zwischenzeit (in einer neueren Version, weitere folgen) ins offizielle Docker Hub gepusht: https://hub.docker.com/repository/docker/matthiaspischka/wildfly-keycloak
Update 2 (31.03.2022)
Ab Version 25 des WildFly Servers ist ein eigenes Subsystem für OpenID Connect integriert, sodass kein expliziter Adapter für Keycloak installiert werden muss. Ich verzichte somit auf neuere Docker Images, die den bisherigen Keycloak Adapter integrierten. Es folgt demnächst eine Einführung für WildFly mit Keycloak ohne zusätzlichen Adapter, die ich hier verlinken werde.
0 Kommentare