Mit Keycloak hinter einem reverse-proxy: Konnte nicht geöffnet Admin loginpage, da mixed Content
also ich habe ein problem immer keycloak 3.2.1 arbeiten hinter kong (0.10.3), ein reverse-proxy basierend auf nginx.
Szenario ist:
Nenne ich keycloak über mein gateway-route über https://{gateway}/auth
und es zeigt mir den entrypoint mit keycloak-logo, link zur admin-Konsole usw. - so weit, so gut.
Aber beim klicken auf Verwaltung-Konsole -> aufrufen https://{gateway}/auth/admin/master/console/
, keycloak zu laden versucht seine css - /js über http (siehe screenie unten), die mein browser blockiert, da mixed content.
Suchte ich herum und fand diesen thread: keycloak apache-server-Konfiguration mit 'Mixed Content' - Probleme, die dazu führen, das github repo: https://github.com/dukecon/keycloak_postgres_https
Von da an, versuchte ich zu integrieren' cli in meine dockerfile mit Erfolg (nicht ändern, die Inhalte der Dateien nur kopiert und Sie in mein repo hinzufügen/ausführen dockerfile). Dies ist mein dockerfile jetzt:
FROM jboss/keycloak-postgres:3.2.1.Final
USER root
ADD config.sh /tmp/
ADD batch.cli /tmp/
RUN bash /tmp/config.sh
#Give correct permissions when used in an OpenShift environment.
RUN chown -R jboss:0 $JBOSS_HOME/standalone && \
chmod -R g+rw $JBOSS_HOME/standalone
USER jboss
EXPOSE 8080
Traurig, aber mein problem besteht immer noch:
So, ich bin aus Ideen für jetzt und hoffe Ihr könnte mir helfen:
- Wie sage ich keycloak zu nennen seine " css-Dateien über https-hier?
- muss ich haben, etwas zu ändern im cli-Skript?
Hier ist der Inhalt des Skripts:
config.sh:
#!/bin/bash -x
set -e
JBOSS_HOME=/opt/jboss/keycloak
JBOSS_CLI=$JBOSS_HOME/bin/jboss-cli.sh
JBOSS_MODE=${1:-"standalone"}
JBOSS_CONFIG=${2:-"$JBOSS_MODE.xml"}
echo "==> Executing..."
cd /tmp
$JBOSS_CLI --file=`dirname "$0"`/batch.cli
# cf. http://stackoverflow.com/questions/34494022/permissions-error-when-using-cli-in-jboss-wildfly-and-docker
/bin/rm -rf ${JBOSS_HOME}/${JBOSS_MODE}/configuration/${JBOSS_MODE}_xml_history/current
- und batch.cli:
embed-server --std-out=echo
# http://keycloak.github.io/docs/userguide/keycloak-server/html/server-installation.html
# 3.2.7.2. Enable SSL on a Reverse Proxy
# First add proxy-address-forwarding and redirect-socket to the http-listener element.
# Then add a new socket-binding element to the socket-binding-group element.
batch
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=proxy-address-forwarding,value=true)
/subsystem=undertow/server=default-server/http-listener=default:write-attribute(name=redirect-socket,value=proxy-https)
/socket-binding-group=standard-sockets/socket-binding=proxy-https:add(port=443)
run-batch
stop-embedded-server
Kann es von Interesse sein, auch, dass kong das Deployment auf openshift mit einer route über einen redirect von http zu https ( "insecureEdgeTerminationPolicy": "Redirect" ).
InformationsquelleAutor Dominik | 2017-11-08
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das klingt irgendwie wie ein Duplikat von Keycloak Andockfenster hinter loadbalancer mit https scheitert
Setzen der request-Header
X-Forwarded-For
undX-Forwarded-Proto
im nginx. Dann müssen Sie konfigurieren Keycloak (Wildfly, Sog) zusammen zu arbeiten mit dem SSL-terminierenden reverse-proxy (auch bekannt als load-balancer). Sehen http://www.keycloak.org/docs/latest/server_installation/index.html#_setting-up-a-load-balancer-or-proxy für eine detaillierte Beschreibung.Der Punkt ist, dass nginx ist das beenden von SSL und Weiterleitung der Anfragen an Keycloak als Reine http. Daher Keycloak/Wildfly muss gesagt werden, dass die eingehenden http Anfragen von nginx behandelt werden müssen, wie Sie waren https.
Für alle, stecken in der gleichen situation, werde ich auch mal diesen Tipp hier: Abgesehen von den Dingen, die Boomer beschrieben (eigentlich kong sendet die richtigen Header per default), hatten wir ein problem mit unsere openshift-Dienst, der aufgerufen wurde, über 8080. die standard-port-Bindung für die 8080 im kc ist http, also kc serviert, http. Wir ändern unsere openshift-config zu verwenden, 8443, et voila. gearbeitet. 🙂
Etwas nicht Frage, wie funktioniert Keycloak auflösen der base-url? Wir haben eine Keycloak istance mit einem öffentlichen und einem privaten ip-Adresse und die
iss
Bereich der JWT bearer-token (das ist der Bereich, url) entsprechend ändert, d.h. wenn wir auf den Endpunkt auth aus öffentlichen Adresse dieiss
Feld istpublic-ip/realms/master
und aus dem privaten ip-Adresse ist esprivate-ip/realms/master
. Ist das ein HTTP-Magie oder eine Kycloak config? Docs erwähnen einrichten der reverse-proxy aber das ist ein anderer Fall, nehme ich an.InformationsquelleAutor Boomer
Fügen Sie die
X-Forwarded-For
undX-Forwarded-Proto
Header (wie Boomer gesagt) in allen vorgeschalteten load-Balancer und sicherzustellen, dass diejenigen erreichen Keycloak server.X-Forwarded-For
werden sollte, die domain Ihrer Keycloak die Routen zu den LB undX-Forwarded-Proto
sollte das Protokoll (in den meisten Fällen https).Als letzten Schritt müssen Sie zum ändern
standalone.xml
oderstandalone-ha.xml
- Datei und fügen Sie dieproxy-address-forwarding="true"
Attribut<http-listener>
element unter<server>
.Wenn Sie das Andockfenster können Sie
PROXY_ADDRESS_FORWARDING
Umfeld var von der ursprünglichen Keycloak container dieses Attribut festgelegt.InformationsquelleAutor László Szabó