[{"data":1,"prerenderedAt":215},["ShallowReactive",2],{"seo-verification":3,"blog-keycloak-cves-semana-38-migrar-authelia-zitadel-vps-es":6},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-keycloak-cves-semana-38-migrar-authelia-zitadel-vps-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":36,"sections":37,"ctaTitle":152,"ctaBody":153,"ctaButton":154,"ctaUrl":155,"relatedPosts":156},372,"keycloak-cves-semana-38-migrar-authelia-zitadel-vps",{"fr":12,"en":13,"ar":14,"es":10},"keycloak-cves-semaine-38-migrer-authelia-zitadel-vps","keycloak-cves-week-38-migrate-authelia-zitadel-vps","ثغرات-keycloak-الأسبوع-38-هجرة-إلى-authelia-zitadel","Keycloak v26.7.4: 6 CVEs — migrar a Authelia o ZITADEL","Keycloak v26.7.4 parchea 6 CVEs incluidos dos DoS no autenticados. Para menos de 10 apps SSO en VPS, Authelia (\u003C 30 MB) o ZITADEL reducen la superficie de ataque.",12,0,false,"2026-09-23T00:00:00+00:00","2026-09-23T15:23:17+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fkeycloak-cves-semaine-38-migrer-authelia-zitadel-vps-poster.svg",{"categorySlug":34,"appSlug":35},"ciberseguridad-bastion","authelia","El 16 de septiembre de 2026, el equipo de Keycloak publicó la versión 26.7.4 con un boletín inusual: seis CVEs corregidas en una sola entrega, dos de las cuales permiten a cualquier anónimo en Internet tumbar el servidor sin credenciales. Si gestionas el SSO de menos de diez aplicaciones en un VPS, esta señal merece una pausa: ¿sigue siendo Keycloak la herramienta adecuada? Esta guía repasa las seis vulnerabilidades, compara las alternativas ligeras Authelia y ZITADEL, y propone un camino de migración concreto manteniendo Keycloak en paralelo.",[38,42,52,99,102,121,124,142,146,149],{"type":39,"title":40,"body":41},"h2","Keycloak v26.7.4 — por qué 6 CVEs en una semana cambian el panorama","Las notas de la versión 26.7.4 se publicaron el 16 de septiembre de 2026, una semana después de la 26.7.3 que ya había cerrado varios agujeros. Este ritmo revela menos un bug aislado que una deuda estructural en la superficie de exposición de Keycloak: el proyecto soporta docenas de protocolos (OIDC, SAML, LDAP, Kerberos), una interfaz de administración completa y un motor de temas del lado del servidor. Cada capa tiene su propia superficie de red.\n\nLas dos vulnerabilidades más graves (CVE-2026-79651, CVSS 7.5, y CVE-2026-18212, CVSS 7.5) son especialmente emblemáticas: permiten a un atacante no autenticado agotar la memoria del proceso Keycloak golpeando endpoints accesibles públicamente — la página de login y los endpoints SAML — sin ninguna cuenta. En un VPS con 2 a 4 GB de RAM compartidos entre varios servicios, ese vector puede tumbar toda la stack.\n\nOtra señal: la versión 26.7.1, publicada pocas semanas antes, ya había introducido regresiones de seguridad que la 26.7.4 solo corrige parcialmente (CVE-2026-74909 está documentada explícitamente como «corrección incompleta» de la 26.7.1). Dos ciclos de parche en menos de un mes en versiones menores consecutivas es una señal de que el código superficial está bajo presión.",{"type":43,"title":44,"items":45},"ul","Qué podría haber permitido cada CVE — resumen no técnico",[46,47,48,49,50,51],"**CVE-2026-79651 (CVSS 7.5 — alta)**: Keycloak acepta etiquetas de locale arbitrarias en los endpoints de temas sin limitarlas ni validarlas. Un atacante envía locales únicos en bucle desde la red pública; cada solicitud asigna memoria que nunca se libera. Resultado: fallo del proceso por agotamiento de memoria, sin necesidad de credencial alguna.","**CVE-2026-18212 (CVSS 7.5 — alta)**: los helpers SAML Redirect DEFLATE filtran el estado nativo de la biblioteca zlib. Una solicitud SAML malformada basta para desencadenar corrupción de memoria que puede llevar al fallo del servidor o a una fuga de datos de sesión.","**CVE-2026-74909 (CVSS 8.1 — alta)**: un punto y coma codificado en porcentaje (`%3B`) elude la limpieza de parámetros matrix en PathMatcher. Un atacante puede acceder a un recurso protegido por una política más estricta usando la forma menos restrictiva de la misma ruta.","**CVE-2026-90997 (CVSS 7.4 — alta)**: en despliegues sobre MySQL o MariaDB, el número predeterminado de filas que devuelve el motor de almacenamiento hace que las compuertas anti-replay sean ineficaces. Un artefacto de autenticación ya utilizado puede reutilizarse.","**CVE-2026-17526 (CVSS 7.2 — alta)**: el rol `impersonation` puede suplantar la identidad de un administrador de realm. Un operador con permisos limitados puede elevar sus privilegios hasta la administración completa del realm.","**CVE-2026-19607 (CVSS 5.3 — media)**: una colisión de nombre de usuario en el flujo de federación de identidad (broker) bloquea la cuenta del usuario legítimo. El usuario legítimo queda expulsado de su propia cuenta sin ninguna acción por su parte.",{"type":53,"title":54,"headers":55,"rows":60},"comparison","Keycloak vs Authelia vs ZITADEL — elegir según tu contexto VPS",[56,57,58,59],"Criterio","Keycloak 26.7.4","Authelia 4.x","ZITADEL 2.x",[61,66,70,74,79,84,89,94],[62,63,64,65],"RAM en reposo","512 MB – 1 GB (JVM)","\u003C 30 MB (Go)","150 – 300 MB (Go + CockroachDB o PostgreSQL)",[67,68,69,69],"Lenguaje \u002F runtime","Java (JVM)","Go — binario único",[71,72,72,73],"Licencia","Apache 2.0","Apache 2.0 (núcleo)",[75,76,77,78],"Protocolos","OIDC, SAML, LDAP, Kerberos, WebAuthn","OIDC, 2FA (TOTP, WebAuthn)","OIDC, OAuth2, SAML, LDAP, WebAuthn",[80,81,82,83],"Interfaz de administración","Completa — realms, clients, flujos","Solo YAML","Consola web + API gRPC\u002FREST",[85,86,87,88],"Ideal para","> 20 apps, federación LDAP, SAML enterprise","\u003C 10 apps, proxy auth, equipo técnico","\u003C 20 apps, equipo dev, API-first",[90,91,92,93],"Mantenibilidad en VPS","Pesada: JVM, config XML, migraciones","Ligera: 1 archivo YAML, 1 binario","Media: base de datos requerida, pero API limpia",[95,96,97,98],"Superficie CVE (historial)","Alta: 6 CVEs en v26.7.4 sola","Baja: \u003C 5 CVEs desde 2022","Baja a media: proyecto más joven",{"type":39,"title":100,"body":101},"Authelia — SSO ligero para menos de 10 aplicaciones","Authelia es un servidor de autenticación y autorización escrito en Go. Expone un endpoint de validación HTTP que tu reverse proxy (nginx, Traefik, Caddy) puede consultar para proteger aplicaciones sin que estas necesiten implementar OIDC por sí mismas. También soporta el flujo OIDC completo para las aplicaciones que lo requieran.\n\nSu huella de memoria es su principal fortaleza operacional: en reposo, Authelia consume entre 20 y 30 MB de RAM según las mediciones publicadas en los issues de GitHub del proyecto (discusiones #5939 y #6048). En un VPS de 2 GB compartido entre Nextcloud, un servidor de correo y un reverse proxy, esto es insignificante comparado con el mínimo de 512 MB de la JVM de Keycloak antes de cualquier carga.\n\nLa configuración es completamente declarativa (YAML). No hay interfaz gráfica de administración — una ventaja para la seguridad (ningún endpoint de admin expuesto) y un inconveniente para equipos no técnicos. Para un desarrollador en solitario o un equipo pequeño que gestiona sus propias aplicaciones en VPS, Authelia suele ser la elección correcta.",{"type":103,"title":104,"steps":105},"steps","Migrar de Keycloak a Authelia — exportar OIDC, configurar, testear",[106,109,112,115,118],{"title":107,"body":108},"Exportar la configuración OIDC de Keycloak","En la consola de administración de Keycloak, ve a Realm Settings → Export. Marca «Export clients» y «Export groups». Descarga el JSON resultante — contiene tus clientes OIDC con sus redirect URIs y scopes. Este archivo sirve de referencia para reconfigurar cada aplicación en Authelia; no se importa directamente.",{"title":110,"body":111},"Instalar Authelia con Docker Compose","Crea un `docker-compose.yml` mínimo:\n\n`services:`\n`  authelia:`\n`    image: authelia\u002Fauthelia:latest`\n`    volumes:`\n`      - .\u002Fconfig:\u002Fconfig`\n`    ports:`\n`      - 9091:9091`\n`    restart: unless-stopped`\n\nCrea el directorio `config\u002F` y coloca `configuration.yml` en él. La documentación oficial proporciona un esqueleto completo en `https:\u002F\u002Fwww.authelia.com\u002Fconfiguration\u002Fprologue\u002Fintroduction\u002F`.",{"title":113,"body":114},"Configurar los clientes OIDC en Authelia","Para cada aplicación migrada desde Keycloak, añade una entrada bajo `identity_providers.oidc.clients` en `configuration.yml`:\n\n`identity_providers:`\n`  oidc:`\n`    clients:`\n`      - id: mi-app`\n`        secret: '$pbkdf2-sha512$...'`\n`        redirect_uris:`\n`          - https:\u002F\u002Fmi-app.ejemplo.com\u002Foauth\u002Fcallback`\n`        scopes: [openid, email, profile]`\n\nGenera el secreto con `authelia crypto hash generate pbkdf2 --variant sha512`. Usa el JSON exportado de Keycloak para encontrar las redirect URIs de cada cliente.",{"title":116,"body":117},"Configurar el reverse proxy para que consulte Authelia","Authelia funciona como middleware de validación. En nginx, añade un bloque `auth_request`:\n\n`location \u002Fauthelia {`\n`  internal;`\n`  proxy_pass http:\u002F\u002Fauthelia:9091\u002Fapi\u002Fauthz\u002Fforward-auth;`\n`  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;`\n`}`\n\n`location \u002F {`\n`  auth_request \u002Fauthelia;`\n`  proxy_pass http:\u002F\u002Fmi-app:3000;`\n`}`\n\nPara las aplicaciones que usan OIDC de forma nativa, apunta el issuer a `https:\u002F\u002Fauth.tu-dominio.com`.",{"title":119,"body":120},"Probar cada aplicación antes de desconectar Keycloak","Para cada aplicación migrada, verifica tres flujos: inicio de sesión inicial (redirección a Authelia → autenticación → vuelta a la app), logout (cookie de Authelia y sesión de la app invalidadas), y segundo factor si está activado. No desconectes Keycloak hasta que todos los flujos de todas las aplicaciones estén validados en Authelia. Mantén el contenedor Keycloak detenido pero no eliminado durante 30 días para poder hacer rollback.",{"type":39,"title":122,"body":123},"ZITADEL — IdP API-first para equipos de desarrollo","ZITADEL es un Identity Provider escrito en Go, con licencia Apache 2.0, publicado por el equipo suizo ZITADEL Cloud. Su repositorio oficial es `github.com\u002Fzitadel\u002Fzitadel`. Mientras que Authelia está diseñado como middleware de proxy, ZITADEL es un IdP completo con una API gRPC\u002FREST de primera clase — construido para organizaciones que crean aplicaciones, no solo las protegen.\n\nLa huella de memoria es superior a Authelia porque ZITADEL requiere una base de datos (PostgreSQL o CockroachDB), pero se mantiene en el rango de 150 a 300 MB bajo carga normal — muy por debajo del mínimo de 512 MB de la JVM de Keycloak. El proyecto soporta OIDC, OAuth2, SAML 2.0, LDAP de solo lectura y WebAuthn.\n\nZITADEL es especialmente adecuado para equipos de desarrollo que construyen aplicaciones SaaS y necesitan gestionar organizaciones y usuarios programáticamente via API, sin pasar por una GUI para cada operación. La consola web está disponible pero la API es el camino principal.",{"type":103,"title":125,"steps":126},"Migrar de Keycloak a ZITADEL — procedimiento en VPS",[127,130,133,136,139],{"title":128,"body":129},"Desplegar ZITADEL con Docker Compose","ZITADEL proporciona un `docker-compose.yml` oficial en su repositorio de GitHub (directorio `e2e\u002F`). La configuración mínima requiere PostgreSQL (o CockroachDB) y un `ZITADEL_MASTERKEY` de 32 caracteres:\n\n`ZITADEL_MASTERKEY=$(openssl rand -base64 32)`\n\nConsulta la documentación oficial en `https:\u002F\u002Fzitadel.com\u002Fdocs\u002Fself-hosting\u002Fdeploy\u002Fcompose` para el archivo completo y las variables de entorno requeridas.",{"title":131,"body":132},"Crear aplicaciones OIDC en ZITADEL","En la consola de ZITADEL (`https:\u002F\u002Ftu-instancia:8080`), crea una Organización y luego un Proyecto. Dentro de ese proyecto, crea una Aplicación de tipo «Web» o «User Agent» según tu caso de uso.\n\nZITADEL genera un Client ID y un Client Secret. Configura las Redirect URIs usando el JSON exportado de Keycloak como referencia. El endpoint de Discovery está en `https:\u002F\u002Ftu-instancia:8080\u002F.well-known\u002Fopenid-configuration`.",{"title":134,"body":135},"Migrar usuarios desde Keycloak","Keycloak puede exportar usuarios de un realm como JSON desde la consola (Realm Settings → Export → marcar «Export users»). Las contraseñas hasheadas no se pueden importar directamente en ZITADEL — los algoritmos de hash difieren.\n\nDos enfoques: (1) importar metadatos de usuario vía la API de ZITADEL (`POST \u002Fmanagement\u002Fv1\u002Fusers\u002Fhuman\u002F_import`) con restablecimiento de contraseña obligatorio al primer inicio de sesión, o (2) migración progresiva vía login social\u002FOIDC (ZITADEL consume Keycloak como IdP externo durante la transición). El enfoque (2) evita pedir a todos los usuarios que restablezcan su contraseña el mismo día.",{"title":137,"body":138},"Actualizar tus aplicaciones para apuntar a ZITADEL","Actualiza las variables de entorno de cada aplicación:\n\n`OIDC_ISSUER=https:\u002F\u002Ftu-instancia:8080`\n`OIDC_CLIENT_ID=\u003Czitadel-client-id>`\n`OIDC_CLIENT_SECRET=\u003Czitadel-client-secret>`\n\nEl endpoint de Discovery permite a la mayoría de las bibliotecas OIDC auto-configurarse. Prueba cada aplicación con una cuenta de prueba antes de cambiar el tráfico de producción.",{"title":140,"body":141},"Validar los flujos SSO y deshabilitar Keycloak","Verifica login, logout, refresco de token y segundo factor en cada aplicación. En ZITADEL, la pestaña «Sessions» de la consola te permite ver las sesiones activas en tiempo real e invalidarlas si es necesario.\n\nMantén el contenedor Keycloak detenido pero no eliminado durante 30 días. Elimínalo tras este período de retención.",{"type":143,"title":144,"body":145},"tip","Mantener Keycloak en paralelo durante la migración — la estrategia de corte limpio","La objeción clásica a migrar un IdP es válida: todas tus aplicaciones comparten el mismo proveedor de identidad. Si la migración falla a mitad de camino, nadie puede iniciar sesión.\n\nLa estrategia recomendada es mantener Keycloak operativo durante toda la migración y cambiar las aplicaciones una a una. Varios mecanismos facilitan esto:\n\n**DNS por aplicación**: cada aplicación apunta a un IdP mediante una variable de entorno. Cambia `OIDC_ISSUER` de una aplicación a la vez, prueba, y pasa a la siguiente. Keycloak sigue sirviendo a las aplicaciones no migradas aún.\n\n**Sesiones independientes**: OIDC crea sesiones de aplicación independientes. Una aplicación migrada a Authelia o ZITADEL no invalida las sesiones activas de las aplicaciones que siguen en Keycloak.\n\n**Horizonte de 30 días**: la mayoría de las migraciones de menos de 10 aplicaciones requieren de 2 a 5 días de trabajo técnico. Planifica una semana, valida durante 30 días, luego corta. El `docker compose stop keycloak` es reversible en 30 segundos.",{"type":39,"title":147,"body":148},"Errores comunes durante la migración SSO","Cuatro trampas aparecen sistemáticamente en las migraciones de Keycloak hacia alternativas ligeras.\n\n**Olvidar las redirect URIs**: Keycloak valida las redirect URIs de forma exacta por defecto. Authelia y ZITADEL hacen lo mismo. Si tu aplicación envía `https:\u002F\u002Fapp.ejemplo.com\u002Fcallback` pero la configuración del IdP declara `https:\u002F\u002Fapp.ejemplo.com\u002Foauth\u002Fcallback`, la autenticación falla con un error `redirect_uri_mismatch`. Verifica cada URI en el JSON exportado de Keycloak.\n\n**Los scopes y claims no son idénticos**: Keycloak puede configurarse para devolver claims personalizados (roles, atributos de usuario) que consumen tus aplicaciones. Authelia devuelve por defecto solo `openid`, `profile` y `email`. Si tu aplicación depende de un claim `roles` o `groups`, verifica que el IdP de destino puede producirlo antes de desconectar Keycloak.\n\n**La sesión del IdP y la sesión de la aplicación son distintas**: un logout del IdP no desconecta automáticamente la aplicación si esta no implementa back-channel logout. Los usuarios pueden seguir conectados a una aplicación tras haberse desconectado del IdP. Prueba explícitamente el flujo de logout completo.\n\n**El clock skew invalida los tokens**: los tokens OIDC tienen una ventana de validez corta (típicamente 5 a 15 minutos). Si el reloj de tu VPS se desvía más de unas pocas decenas de segundos, los tokens expiran antes de ser usados. Verifica que `chrony` o `systemd-timesyncd` está activo en tu VPS con `timedatectl status`.",{"type":39,"title":150,"body":151},"Tras la migración — probar la autenticación de cada aplicación","Una migración SSO no está completa cuando funciona el primer inicio de sesión. Esta es la lista de validación mínima a aplicar a cada aplicación.\n\n**Login inicial**: abre una sesión de navegación privada (sin cookies existentes) e inicia sesión. La redirección al IdP debe funcionar, la autenticación debe completarse y el retorno a la aplicación debe aterrizar en la página correcta.\n\n**Refresh token**: espera la expiración del access token y verifica que la aplicación lo refresca silenciosamente sin forzar un nuevo inicio de sesión.\n\n**Logout**: desconéctate desde la aplicación y verifica que la sesión queda invalidada en el lado del IdP (Authelia: cookie `authelia_session` ausente; ZITADEL: sesión ausente de la consola). Intenta acceder a un recurso protegido después del logout — debes ser redirigido a la página de inicio de sesión.\n\n**Segundo factor**: si 2FA está activado, prueba TOTP y WebAuthn por separado. Las sesiones WebAuthn están vinculadas al dominio — una migración simultánea de dominio invalidaría todas las passkeys existentes.\n\n**Acceso no autorizado**: intenta acceder a un recurso protegido sin token válido y verifica que la respuesta es un 401 o una redirección al IdP, no un 500 o una página de aplicación sin datos.","Authelia o ZITADEL desplegados en tu VPS en minutos","ServOrbit ofrece Authelia como aplicación marketplace. Despliega SSO ligero en tu VPS sin configuración manual de Docker Compose.","Desplegar Authelia en VPS","\u002Fmarketplace\u002Fsecurite\u002Fauthelia",[157,176,192],{"id":158,"slug":159,"slugs":160,"title":164,"excerpt":165,"readTime":166,"views":167,"isPinned":19,"publishedAt":168,"updatedAt":169,"category":170,"categories":171,"featuredImage":30,"bgImage":31,"posterImage":173,"relatedSolution":174},272,"authentik-authelia-o-keycloak-elegir-sso-en-vps",{"fr":161,"en":162,"ar":163,"es":159},"authentik-vs-authelia-keycloak-sso-vps-2026","authentik-authelia-or-keycloak-choosing-your-sso-on-vps","authentik-أو-authelia-أو-keycloak-اختيار-sso-على-vps","Authentik, Authelia o Keycloak: elegir su SSO en VPS","Authentik, Authelia o Keycloak en VPS: compare el consumo real de memoria, los protocolos cubiertos y las CVE de Keycloak 26.7.1 para elegir su SSO self-hosted.",6,1,"2026-08-16T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[172],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fauthentik-vs-authelia-keycloak-sso-vps-2026-poster.svg",{"categorySlug":34,"appSlug":175},"authentik",{"id":177,"slug":178,"slugs":179,"title":183,"excerpt":184,"readTime":166,"views":185,"isPinned":19,"publishedAt":186,"updatedAt":169,"category":187,"categories":188,"featuredImage":30,"bgImage":31,"posterImage":190,"relatedSolution":191},162,"alojar-authelia-en-un-vps",{"fr":180,"en":181,"ar":182,"es":178},"self-host-authelia-vps","self-host-authelia-on-a-vps-mfa-and-sso-for-your-whole-stack","استضافة-authelia-على-vps-مصادقة-ثنائية-ودخول-موحد-لمنظومتك","Alojar Authelia en un VPS: MFA y SSO para toda su stack","Despliegue Authelia en su VPS: MFA, SSO y control de acceso preciso ante cualquier aplicación autoalojada, sin tocar el código, con un solo archivo de configuración.",2,"2026-07-04T00:00:00+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[189],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fself-host-authelia-vps-poster.svg",{"categorySlug":27,"appSlug":35},{"id":193,"slug":194,"slugs":195,"title":199,"excerpt":200,"readTime":201,"views":18,"isPinned":19,"publishedAt":202,"updatedAt":203,"category":204,"categories":210,"featuredImage":30,"bgImage":31,"posterImage":212,"relatedSolution":213},351,"instalar-zitadel-vps-iam-codigo-abierto-desarrolladores",{"fr":196,"en":197,"ar":198,"es":194},"deployer-zitadel-vps","self-host-zitadel-vps-open-source-iam-developers","zitadel-vps-iam-maftouh-almassdar-lilmutatawireen","ZITADEL en VPS: IAM de código abierto para desarrolladores","Despliegue ZITADEL self-hosted en un VPS: OIDC, OAuth 2.0, passkeys y multi-tenancy nativo con Docker Compose en menos de 5 minutos.",3,"2026-01-08T00:00:00+00:00","2026-09-16T14:44:13+00:00",{"id":205,"name":206,"slug":207,"color":208,"icon":209},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[211],{"id":205,"name":206,"slug":207,"color":208,"icon":209},"\u002Fblog\u002Fcovers\u002Fdeployer-zitadel-vps-poster.svg",{"categorySlug":27,"appSlug":214},"zitadel",1790177371995]