Keycloak est un système d'infrastructure d'authentification OSS qui prend en charge OAuth2.0, OIDC, etc. Keycloak peut également être lié à un compte d'un service qui fournit un fournisseur Open ID (OP). Par exemple, vous pouvez vous connecter depuis votre compte Google ou Facebook.
La description de l'authentification et de Keycloak est décrite en détail dans les articles suivants. https://www.atmarkit.co.jp/ait/articles/1708/31/news011.html
Dans cet article, j'écrirai sur le développement de l'extension de Keycloak.
Keycloak est construit à partir d'un framework appelé SPI, qui vous permet d'étendre les fonctionnalités existantes.
Pour vérifier le fonctionnement de l'extension pendant le développement, il est nécessaire de construire avec Maven, de déployer sur le serveur Keycloak et de modifier le fichier de paramètres.
Cette fois, je vise à faire cette série de travaux lors de la création d'une image Decker.
De plus, avec cette méthode, vous n'avez pas besoin de définir Maven, Java, etc. localement, et vous pouvez développer et tester si seul Docker est installé.
Enfin, l'image d'exemple du résultat du test de performance par Gatling est ajoutée pour référence.
Commençons par créer une image Docker.
Cette fois, nous le baserons sur l'exemple de code suivant de l'extension Keycloak.
https://github.com/keycloak/keycloak/tree/master/examples/providers/domain-extension
Comme vous pouvez le voir dans l'exemple de code
README.md
, les étapes suivantes sont nécessaires pour vérifier l'opération.
- Module de construction (installation propre mvn)
- Déployez le module par jboss-cli.sh
Créez un fichier Dockerfile afin de pouvoir effectuer toutes les étapes ci-dessus lors de la création d'une image.
# 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
(Étant donné que cette version utilise la résolution des dépendances de Maven et le cache de construction en premier, le temps de construction sera beaucoup plus rapide en utilisant le cache pour la deuxième version et les versions suivantes.)
Avant de créer l'image Docker ci-dessus, vous devez ajouter le contenu suivant au fichier de configuration comme indiqué dans README.md
.
<providers>
...
<provider>module:org.keycloak.examples.domain-extension-example</provider>
</providers>
Cela peut être fait à partir de jboss-cli.sh
.
Commencez par préparer les fichiers suivants.
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
Vous pouvez voir que le fichier ci-dessus a été ajouté au fichier Dockerfile pour être exécuté à partir de jboss-cli.sh
.
docker build -t keycloak-domain-extension .
docker run -p 8080:8080 -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin --name keycloak keycloak-domain-extension
Avec cela, je pense que cela conduira à une amélioration de l'efficacité du développement en effectuant tout le développement et le déploiement à partir de Docker Image.
En ce qui concerne le test de performance, j'ai pu obtenir des informations très détaillées sur le résultat de l'exécution à partir du code source, je vais donc attacher un exemple d'image du résultat. La méthode de test détaillée, etc. peut être référencée à partir de la partie test du code source.
https://gatling.io/ https://github.com/keycloak/keycloak/tree/master/testsuite/performance
Les tests de performance sont effectués à l'aide de gatling afin que vous puissiez voir à partir de l'image des résultats des tests, mais vous pouvez voir que des données de test très détaillées sont disponibles.
Écran de la console des résultats du test
Écran de résultat du test
Écran d'informations détaillées
Recommended Posts