Keycloak ist ein OSS-Authentifizierungsinfrastruktursystem, das OAuth2.0, OIDC usw. unterstützt. Keycloak kann auch mit einem Konto eines Dienstes verknüpft werden, der einen Open ID Provider (OP) bereitstellt. Sie können sich beispielsweise von Ihrem Google- oder Facebook-Konto aus anmelden.
Die Beschreibung der Authentifizierung und des Schlüsselumhangs wird in den folgenden Artikeln ausführlich beschrieben. https://www.atmarkit.co.jp/ait/articles/1708/31/news011.html
In diesem Artikel werde ich über die Erweiterungsentwicklung von Keycloak schreiben.
Keycloak basiert auf einem Framework namens SPI, mit dem Sie vorhandene Funktionen erweitern können.
Um den Betrieb der Erweiterung während der Entwicklung zu überprüfen, müssen Sie mit Maven erstellen, auf dem Keycloak-Server bereitstellen und die Einstellungsdatei ändern.
Dieses Mal möchte ich diese Reihe von Arbeiten beim Erstellen eines Decker-Images ausführen.
Darüber hinaus erfordert diese Methode keine lokalen Einstellungen wie Maven und Java. Entwicklung und Test können durchgeführt werden, wenn nur Docker installiert ist.
Schließlich wird das Beispielbild des Ergebnisses des Leistungstests von Gatling als Referenz hinzugefügt.
Beginnen wir mit der Erstellung eines Docker-Images.
Dieses Mal basieren wir auf dem folgenden Beispielcode der Keycloak-Erweiterung.
https://github.com/keycloak/keycloak/tree/master/examples/providers/domain-extension
Wie Sie dem Beispielcode "README.md" entnehmen können, sind die folgenden Schritte erforderlich, um den Vorgang zu überprüfen.
- Build Module (MVN Clean Install)
- Stellen Sie das Modul mit jboss-cli.sh bereit
Erstellen Sie eine Dockerfile-Datei, damit Sie beim Erstellen eines Bildes alle oben genannten Schritte ausführen können.
# Dockerfile
FROM maven:3.6.3-jdk-8 as builder
WORKDIR /usr/src/domain-extension
COPY ./pom.xml /usr/src/domain-extension/
RUN mvn -B package
COPY ./src/ /usr/src/domain-extension/
RUN mvn -B package
FROM jboss/keycloak:8.0.1
USER jboss
WORKDIR /opt/jboss/keycloak
COPY --from=builder /usr/src/domain-extension/target/domain-extension-example.jar /opt/jboss/keycloak/target/
COPY cli/domain-extension-provider.cli /opt/jboss/keycloak/cli/
RUN bin/jboss-cli.sh --command="module add --name=org.keycloak.examples.domain-extension-example --resources=target/domain-extension-example.jar --dependencies=org.keycloak.keycloak-core,org.keycloak.keycloak-services,org.keycloak.keycloak-model-jpa,org.keycloak.keycloak-server-spi,org.keycloak.keycloak-server-spi-private,javax.ws.rs.api,javax.persistence.api,org.hibernate,org.javassist,org.liquibase" && \
bin/jboss-cli.sh --file=cli/domain-extension-provider.cli && \
rm -rf /opt/jboss/keycloak/standalone/configuration/standalone_xml_history
(Da dieser Build zuerst die Abhängigkeitsauflösung und den Build-Cache von Maven verwendet, ist die Build-Zeit viel schneller, wenn der Cache für den zweiten und die nachfolgenden Builds verwendet wird.)
Bevor Sie das obige Docker-Image erstellen, müssen Sie der Konfigurationsdatei den folgenden Inhalt hinzufügen, wie in "README.md" gezeigt.
<providers>
...
<provider>module:org.keycloak.examples.domain-extension-example</provider>
</providers>
Dies kann von jboss-cli.sh
aus erfolgen.
Bereiten Sie zunächst die folgenden Dateien vor.
cli/domain-extension-provider.cli
embed-server --server-config=standalone.xml --std-out=echo
/subsystem=keycloak-server/:write-attribute(name=providers, value=["classpath:${jboss.home.dir}/providers/*","module:org.keycloak.examples.domainextension"])
stop-embedded-server
Sie können sehen, dass die obige Datei zur Dockerfile-Datei hinzugefügt wurde, um von jboss-cli.sh
ausgeführt zu werden.
docker build -t keycloak-domain-extension .
docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin --name keycloak keycloak-domain-extension
Ich denke, dass dies zu einer Verbesserung der Entwicklungseffizienz führen wird, indem die gesamte Entwicklung und Bereitstellung von Docker Image aus durchgeführt wird.
Was den Leistungstest betrifft, konnte ich aus dem Ergebnis der Ausführung sehr detaillierte Informationen aus dem Quellcode abrufen, sodass ich ein Beispielbild des Ergebnisses anhängen werde. Detaillierte Testmethoden usw. können dem Testteil des Quellcodes entnommen werden.
https://gatling.io/ https://github.com/keycloak/keycloak/tree/master/testsuite/performance
Leistungstests werden mithilfe von Gatling durchgeführt, sodass Sie anhand des Bildes der Testergebnisse überprüfen können, ob sehr detaillierte Testdaten verfügbar sind.
Bildschirm der Testergebniskonsole
Testergebnisbildschirm
Detaillierter Informationsbildschirm
Recommended Posts