- workspace-auth.ts: reemplaza isInternalOnlyHost por isDevOnlyUrl que incluye localhost/127.0.0.1 e IPs LAN además de hostnames Docker. getWorkspaceBaseUrl() y getPublicKeycloakBaseUrl() ya ignoran valores dev-only; no usan VITE_KEYCLOAK_URL=http://localhost:... en prod. - Nuevo resolveSystemBaseUrl(): cuando url.origin es localhost porque ORIGIN env var apunta a localhost en producción, busca SITE_URL/APP_URL como fallback para construir redirect_uri seguros. - buildKeycloakAuthorizationUrl() y buildKeycloakLoginUrl() usan resolveSystemBaseUrl() para el redirect_uri (evita localhost:5173). - auth/callback/+page.server.ts: idem para el redirectUri del token exchange. - auth.ts (cliente): resolveKeycloakUrl() detecta en runtime si VITE_KEYCLOAK_URL bakeado apunta a localhost pero el browser NO está en localhost → deriva la URL del hostname real del browser. - .env.example: documenta vars de producción recomendadas (SITE_URL, ORIGIN, VITE_HUB_URL) con advertencias sobre el efecto de ORIGIN. Root cause: el .env de dev (ORIGIN=http://localhost:5173, VITE_KEYCLOAK_URL=http://localhost:8085/kcauth) se usaba en producción sin sobrescribir estas variables, causando que KC generara URLs con localhost como redirect_uri y KC URL. Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
40 lines
2.0 KiB
Plaintext
40 lines
2.0 KiB
Plaintext
# ─── Copia este archivo a .env y ajusta los valores para dev local ─────────────
|
|
# ─── Para PRODUCCIÓN ver el bloque al final de este archivo ──────────────────
|
|
|
|
# API de Anexo76 (frontend y SSR)
|
|
VITE_API_URL=http://localhost:8000/api/
|
|
INTERNAL_API_URL=http://localhost:8000/api/
|
|
|
|
# Hub Workspace
|
|
VITE_HUB_URL=http://localhost:3001
|
|
HUB_URL=http://localhost:3001
|
|
INTERNAL_HUB_URL=http://localhost:8001
|
|
|
|
# Keycloak — URL pública que el BROWSER usará (se bakea en el build)
|
|
VITE_KEYCLOAK_URL=http://localhost:8085/kcauth
|
|
VITE_KEYCLOAK_REALM=master
|
|
VITE_KEYCLOAK_CLIENT_ID=anexo76-frontend
|
|
# Keycloak — URL interna que el SERVIDOR usará (no va al browser)
|
|
KEYCLOAK_URL=http://localhost:8085/kcauth
|
|
KEYCLOAK_REALM=master
|
|
KEYCLOAK_CLIENT_ID=anexo76-frontend
|
|
# KEYCLOAK_CLIENT_SECRET= # solo si el cliente KC no es público
|
|
|
|
# SvelteKit — necesario para cookies secure y URLs SSR correctas.
|
|
# ⚠️ En producción DEBE apuntar al dominio público real, no a localhost.
|
|
# Si este valor es localhost, url.origin en los load functions será localhost
|
|
# y los redirect_uri de Keycloak apuntarán a localhost (bug de login).
|
|
ORIGIN=http://localhost:5173
|
|
|
|
# ─── PRODUCCIÓN: vars adicionales críticas ────────────────────────────────────
|
|
# SITE_URL es el fallback de seguridad cuando ORIGIN no se pudo corregir a tiempo.
|
|
# El código lo usa para construir redirect_uri cuando url.origin es localhost.
|
|
# Recomendado: definir TANTO ORIGIN como SITE_URL con el mismo valor en prod.
|
|
#
|
|
# SITE_URL=https://anexo76-dev.aduanasoft.com
|
|
# ORIGIN=https://anexo76-dev.aduanasoft.com
|
|
# VITE_HUB_URL=https://hub-dev.aduanasoft.com (o la URL del Hub en prod)
|
|
# HUB_URL=https://hub-dev.aduanasoft.com
|
|
# VITE_KEYCLOAK_URL= # vacío → se deriva del hostname del browser automáticamente
|
|
# KEYCLOAK_URL=http://keycloak:8080 # URL interna del contenedor KC (si en Docker)
|