2
votes

Comment déboguer à distance attacher Keycloak dans les versions> 8

J'ai récemment mis à niveau Keycloak vers la version 9, et lors de l'exécution dans Docker, j'ai du mal à attacher un débogueur distant. Je soupçonne que cela a à voir avec la mise à niveau sous-jacente de Keycloak vers Java 9+.

L'erreur que j'obtiens est:

handshake failed - connection prematurally closed

Mes ports sont correctement mappés dans Docker (je peux exécuter Keycloak version 7 et il se connecte très bien).


0 commentaires

4 Réponses :


2
votes

En fait, Java 9 a introduit une amélioration de la sécurité en ce qui concerne le débogage. Informations ici: https://stackoverflow.com/a/60090750/2117355

Dans ma définition de service keycloak docker-compose, j'ai pu ajouter sous environment :

DEBUG_PORT: "*:8787"

Et cela a résolu le problème. Je suis maintenant capable de déboguer.


0 commentaires

0
votes

Pour Keycloak version 7

J'utilise cette commande pour exécuter le conteneur docker afin d'activer le débogage au port 1234

-server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m 
-Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman 
-Djava.awt.headless=true 

Connexion à IntelliJ à l'aide de la configuration à distance

-agentlib:jdwp=transport=dt_socket,server=y,suspend=n,address=1234

* Remarque: La valeur par défaut de JAVA_OPTS est ci-dessous, je l'ai donc JAVA_OPTS avec la configuration ci-dessus

docker run -e KEYCLOAK_USER=admin -e KEYCLOAK_PASSWORD=admin 
-e JAVA_OPTS="-server -Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m 
   -Djava.net.preferIPv4Stack=true -Djboss.modules.system.pkgs=org.jboss.byteman 
   -Djava.awt.headless=true 
   -agentlib:jdwp=transport=dt_socket,address=1234,server=y,suspend=n" 
-p 8080:8080 -p 1234:1234 jboss/keycloak:7.0.0 


0 commentaires

1
votes

Avec Keycloak 11.0.2, voici ce que j'ai dû changer dans mon docker-compose.yaml:

$ git diff
diff --git a/docker-compose/keycloak-standalone/docker-compose.yml b/docker-compose/keycloak-standalone/docker-compose.yml
index fcf3a52..93b7209 100644
--- a/docker-compose/keycloak-standalone/docker-compose.yml
+++ b/docker-compose/keycloak-standalone/docker-compose.yml
@@ -11,11 +11,14 @@ services:
       environment:
         KEYCLOAK_USER: admin
         KEYCLOAK_PASSWORD: admin
+        DEBUG: "true"
+        DEBUG_PORT: "*:8787"
         # If DANLON_GOOGLE_TAG_ID and/or DANLON_HOTJAR_ID are set, tracking code is enabled:
         # DANLON_GOOGLE_TAG_ID: GTM-MPTZ8V9
         # DANLON_HOTJAR_ID: 692647
       ports:
         # Default to port 8180
         - ${PORT-8180}:8080
+        - 8787:8787
       volumes:
         - data:/opt/jboss/keycloak/standalone/data


1 commentaires

0
votes

Vous pouvez remplacer les paramètres de débogage en créant votre propre image à l'aide de Dockerfile

Dockerfile:

docker build -t local/debug-keycloack ..
docker run -p 8080:8080 -p 8443:8443 -p 9990:9990 -p 8787:8787 --name debug-keycloack local/debug-keycloack

console:

FROM jboss/keycloak:latest
ENV DEBUG true
ENV DEBUG_PORT *:8787
EXPOSE 8080 8443 9990 8787
ENTRYPOINT ${JBOSS_HOME}/../tools/docker-entrypoint.sh


0 commentaires