Comment définir le docker keycloak base url
en tant que paramètre?
J'ai la configuration de proxy inverse nginx suivante:
server {
listen 80;
server_name example.com;
location /keycloak {
proxy_pass http://example.com:8087/;
}
}
Lorsque j'essaie d'accéder à http://example.com/keycloak/ j'ai reçu une redirection http pour keycloak vers http://example.com/auth/ au lieu de http: // example. com/keycloak/auth/
Des idées?
Vient de tester @home, et plusieurs ajouts de configuration sont nécessaires:
1/Exécutez le conteneur keycloak avec env -e PROXY_ADDRESS_FORWARDING=true
, comme expliqué dans la documentation, pour pouvoir accéder à keycloak par un proxy:
docker run -it --rm -p 8087:8080 --name keycloak -e PROXY_ADDRESS_FORWARDING=true jboss/keycloak:latest
Aussi expliqué dans cette SO question
2/Modifiez le web-context dans le fichier de configuration du keycloak $JBOSS_HOME/standalone/configuration/standalone.xml
La configuration par défaut de la couche de clé pointe sur auth
<web-context>auth</web-context>
Ensuite, vous pouvez le changer en keycloak/auth
<web-context>keycloak/auth</web-context>
Si vous avez besoin d'automatiser cela pour le menu fixe, créez simplement une nouvelle image de porte-clés:
FROM jboss/keycloak:latest
USER jboss
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' $JBOSS_HOME/standalone/configuration/standalone.xml
3/Ajouter des informations de proxy à la configuration de nginx (principalement pour la gestion de http/https)
location /keycloak {
proxy_pass http://example.com:8087;
proxy_set_header Host $Host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
Si vous transmettez des requêtes de nginx à keycloak sur le même serveur, je vous recommande d'utiliser proxy_pass http://localhost:8087;
et, si ce n'est pas le cas, essayez d'utiliser un réseau privé pour éviter le proxy via des requêtes Web externes.
J'espère que cela t'aides
S'appuyant sur la réponse de @Francois Maturel: pour la dernière KeyCloak (actuellement 4.8.x), j'ai dû ajouter une ligne supplémentaire pour remplacer le web-context
dans standalone-ha.xml
:
FROM jboss/keycloak:latest
USER jboss
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' /opt/jboss/keycloak/standalone/configuration/standalone.xml
RUN sed -i -e 's/<web-context>auth<\/web-context>/<web-context>keycloak\/auth<\/web-context>/' /opt/jboss/keycloak/standalone/configuration/standalone-ha.xml
La raison en est que le script de démarrage docker-entrypoint.sh
utilisera la configuration standalone-ha.xml
en plus de standalone.xml
à moins que l'indicateur -c
ne soit passé. Voir ici https://github.com/jboss-dockerfiles/keycloak/blob/master/server/tools/docker-entrypoint.sh