
Después de desempacar e iniciar keycloak para escuchar en 127.0.0.1, configuré nginx para que funcione como un proxy inverso accesible desde un dominio disponible públicamente a través de https.
Esta es la configuración de nginx:
http
{
server_tokens off;
upstream keycloak { ip_hash; server 127.0.0.1:8080; }
server
{
server_name name.domain.tld;
listen 443 ssl http2; # managed by Certbot
ssl_certificate /path/to/cert; # managed by Certbot
ssl_certificate_key /path/to/key; # managed by Certbot
include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot
ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot
location /
{
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
add_header Access-Control-Allow-Origin *;
proxy_pass http://keycloak;
}
}
server
{
server_name name.domain.tld;
listen 80;
location / { return 301 https://$server_name; }
}
}
No se ha cambiado nada en ningún archivo dentro del directorio keycloak.
Se puede acceder a Keycloak, sin embargo, cuando navego a la página de inicio de sesión, me encuentro con una página en blanco debido a un javascript de contenido mixto de /auth/js/keycloak.js?version=df45z
.
Esto se puede solucionar temporalmente desactivando la protección del navegador contra contenido mixto; sin embargo, esto me llevará a una página de inicio de sesión disfuncional y me mostrará este mensaje de error: We are sorry... Invalid parameter: redirect_uri
.
Además, se devolvió un HTTP 400 de /auth/realms/master/protocol/openid-connect/auth?client_id=security-admin-console&redirect_uri=https%3A%2F%2Fname.domain.tld%2Fauth%2Fadmin%2Fmaster%2Fconsole%2F&state=5abb646f-d1c8-49ef-8ae1-9358bfc50d6d&response_mode=fragment&response_type=code&scope=openid&nonce=525b593c-07ab-4afa-8ca0-bd64499061eb
.
(Esperando que su origen sea de algún valor)
Las preguntas anteriores relacionadas con este problema solo sugirieron agregar las directivas proxy_set_header, lo que evitó una pantalla en blanco en el panel inicial que ve cuando accede a la página web de keycloaks, pero no ayudó en el último problema mencionado.
Tenga en cuenta que soy bastante nuevo en este tema en caso de que me haya perdido algo trivial.
Cualquier consejo para solucionar este comportamiento es muy apreciado.
Respuesta1
Su configuración de Nginx se ve bien. Recientemente tuve el mismo problema que tú y tenía más o menos la misma configuración de Nginx.
Lo único que aún me queda por hacer es actualizar el archivo de configuración independiente en la carpeta KeyCloak. Puede encontrar este archivo en keycloak_folder/standalone/configuration/standalone.xml
.
Aquí tendrás que buscar lo siguiente (+- línea 572):
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" />
...
</server>
Y agrega algo proxy-address-forwarding=true
así:
<server name="default-server">
<http-listener name="default" socket-binding="http" redirect-socket="https" enable-http2="true" proxy-address-forwarding="true" />
...
</server>
Esto asegurará que su servidor interno KeyCloak JBoss conozca la dirección del proxy.
Respuesta2
Keycloak acepta PROXY_ADDRESS_FORWARDING
env que se coloca en elstandalone.xml
<http-listener name="default" socket-binding="http" redirect-socket="https" proxy-address-forwarding="${env.PROXY_ADDRESS_FORWARDING:false}" enable-http2="true"/>
proporcionar a la ventana acoplable con la sección PROXY_ADDRESS_FORWARDING
docker -e o docker-composeenvironment
Respuesta3
Además de lo que Thorchy escribió:
Tenía http_auth habilitado en nginx. No pude reiniciar nginx después de eliminarlo de la configuración.
Deshabilitar http_auth reiniciando nginx finalmente resolvió el problema.
Respuesta4
Finalmente solucioné el problema.
La mayoría de las respuestas en Google se establecen PROXY_ADDRESS_FORWARDING
en verdadero. Pero no funciona en mi entorno.
Finalmente vi esta respuesta:https://github.com/codecentric/helm-charts/issues/271#issuecomment-920600882
Después de configurarlo KEYCLOAK_FRONTEND_URL
, funciona ahora.
Agregue la siguiente variable de entorno.
KEYCLOAK_FRONTEND_URL=https://{{ URL }}/auth