Documentation Index
Fetch the complete documentation index at: https://docs.openclaw.ai/llms.txt
Use this file to discover all available pages before exploring further.
Cuándo usarlo
Usa el modo de autenticacióntrusted-proxy cuando:
- Ejecutas OpenClaw detrás de un proxy consciente de identidad (Pomerium, Caddy + OAuth, nginx + oauth2-proxy, Traefik + forward auth).
- Tu proxy gestiona toda la autenticación y pasa la identidad del usuario mediante encabezados.
- Estás en un entorno de Kubernetes o contenedores donde el proxy es la única ruta al Gateway.
- Te encuentras con errores de WebSocket
1008 unauthorizedporque los navegadores no pueden pasar tokens en cargas WS.
Cuándo NO usarlo
- Si tu proxy no autentica usuarios (solo es un terminador TLS o balanceador de carga).
- Si existe alguna ruta al Gateway que omite el proxy (huecos en el firewall, acceso desde la red interna).
- Si no tienes claro si tu proxy elimina o sobrescribe correctamente los encabezados reenviados.
- Si solo necesitas acceso personal para un único usuario (considera Tailscale Serve + loopback para una configuración más sencilla).
Cómo funciona
El proxy agrega un encabezado de identidad
El proxy agrega un encabezado con la identidad del usuario autenticado (por ejemplo,
x-forwarded-user: nick@example.com).El Gateway verifica la fuente de confianza
OpenClaw comprueba que la solicitud provenga de una IP de proxy de confianza (configurada en
gateway.trustedProxies).El Gateway extrae la identidad
OpenClaw extrae la identidad del usuario desde el encabezado configurado.
Comportamiento de emparejamiento de Control UI
Cuandogateway.auth.mode = "trusted-proxy" está activo y la solicitud supera las comprobaciones de proxy de confianza, las sesiones WebSocket de Control UI pueden conectarse sin identidad de emparejamiento de dispositivo.
Implicaciones:
- El emparejamiento deja de ser la puerta principal para el acceso a Control UI en este modo.
- La política de autenticación de tu proxy inverso y
allowUsersse convierten en el control de acceso efectivo. - Mantén la entrada del Gateway bloqueada solo a IPs de proxy de confianza (
gateway.trustedProxies+ firewall).
Configuración
Referencia de configuración
Arreglo de direcciones IP de proxy en las que confiar. Las solicitudes desde otras IPs se rechazan.
Debe ser
"trusted-proxy".Nombre del encabezado que contiene la identidad del usuario autenticado.
Encabezados adicionales que deben estar presentes para que la solicitud sea de confianza.
Lista de permitidos de identidades de usuario. Vacío significa permitir todos los usuarios autenticados.
Soporte opcional para proxies inversos loopback en el mismo host. El valor predeterminado es
false.Terminación TLS y HSTS
Usa un único punto de terminación TLS y aplica HSTS allí.- Terminación TLS en el proxy (recomendado)
- Terminación TLS en el Gateway
Cuando tu proxy inverso gestiona HTTPS para
https://control.example.com, establece Strict-Transport-Security en el proxy para ese dominio.- Buena opción para implementaciones expuestas a internet.
- Mantiene el certificado y la política de endurecimiento HTTP en un solo lugar.
- OpenClaw puede permanecer en HTTP loopback detrás del proxy.
Guía de despliegue
- Empieza primero con una duración máxima corta (por ejemplo,
max-age=300) mientras validas el tráfico. - Aumenta a valores de larga duración (por ejemplo,
max-age=31536000) solo cuando la confianza sea alta. - Agrega
includeSubDomainssolo si todos los subdominios están listos para HTTPS. - Usa preload solo si cumples intencionalmente los requisitos de preload para todo tu conjunto de dominios.
- El desarrollo local solo con loopback no se beneficia de HSTS.
Ejemplos de configuración de proxy
Pomerium
Pomerium
Pomerium pasa la identidad en Fragmento de configuración de Pomerium:
x-pomerium-claim-email (u otros encabezados de claims) y un JWT en x-pomerium-jwt-assertion.Caddy con OAuth
Caddy con OAuth
Caddy con el Plugin Fragmento de Caddyfile:
caddy-security puede autenticar usuarios y pasar encabezados de identidad.nginx + oauth2-proxy
nginx + oauth2-proxy
oauth2-proxy autentica usuarios y pasa la identidad en Fragmento de configuración de nginx:
x-auth-request-email.Traefik con forward auth
Traefik con forward auth
Configuración mixta de tokens
OpenClaw rechaza configuraciones ambiguas en las que tanto ungateway.auth.token (o OPENCLAW_GATEWAY_TOKEN) como el modo trusted-proxy están activos al mismo tiempo. Las configuraciones mixtas de tokens pueden hacer que las solicitudes loopback se autentiquen silenciosamente por la ruta de autenticación equivocada.
Si ves un error mixed_trusted_proxy_token al iniciar:
- Elimina el token compartido al usar el modo de proxy de confianza, o
- Cambia
gateway.auth.modea"token"si quieres autenticación basada en tokens.
gateway.auth.password / OPENCLAW_GATEWAY_PASSWORD en su lugar. La alternativa de token sigue sin admitirse intencionalmente en modo de proxy de confianza.
Encabezado de ámbitos de operador
La autenticación de proxy de confianza es un modo HTTP portador de identidad, por lo que los llamadores pueden declarar opcionalmente ámbitos de operador conx-openclaw-scopes.
Ejemplos:
x-openclaw-scopes: operator.readx-openclaw-scopes: operator.read,operator.writex-openclaw-scopes: operator.admin,operator.write
- Cuando el encabezado está presente, OpenClaw respeta el conjunto de ámbitos declarado.
- Cuando el encabezado está presente pero vacío, la solicitud declara ningún ámbito de operador.
- Cuando el encabezado está ausente, las API HTTP normales portadoras de identidad recurren al conjunto estándar de ámbitos de operador predeterminados.
- Las rutas HTTP de Plugin con autenticación de Gateway son más estrechas de forma predeterminada: cuando
x-openclaw-scopesestá ausente, su ámbito de tiempo de ejecución recurre aoperator.write. - Las solicitudes HTTP con origen de navegador aún deben pasar
gateway.controlUi.allowedOrigins(o el modo deliberado de alternativa con encabezado Host) incluso después de que la autenticación de proxy de confianza tenga éxito.
x-openclaw-scopes explícitamente cuando quieras que una solicitud de proxy de confianza sea más estrecha que los valores predeterminados, o cuando una ruta de Plugin con autenticación de Gateway necesite algo más fuerte que el ámbito de escritura.
Lista de comprobación de seguridad
Antes de habilitar la autenticación trusted-proxy, verifica:- El proxy es la única ruta: El puerto del Gateway está protegido por firewall frente a todo excepto tu proxy.
- trustedProxies es mínimo: Solo las IP reales de tu proxy, no subredes completas.
- La fuente de proxy loopback es deliberada: La autenticación trusted-proxy falla de forma cerrada para solicitudes con fuente loopback a menos que
gateway.auth.trustedProxy.allowLoopbackesté habilitado explícitamente para un proxy en el mismo host. - El proxy elimina encabezados: Tu proxy sobrescribe (no agrega) los encabezados
x-forwarded-*de los clientes. - Terminación TLS: Tu proxy maneja TLS; los usuarios se conectan mediante HTTPS.
- allowedOrigins es explícito: La Control UI que no usa loopback utiliza
gateway.controlUi.allowedOriginsexplícito. - allowUsers está configurado (recomendado): Restringe a usuarios conocidos en lugar de permitir a cualquier persona autenticada.
- Sin configuración mixta de tokens: No configures tanto
gateway.auth.tokencomogateway.auth.mode: "trusted-proxy". - La alternativa de contraseña local es privada: Si configuras
gateway.auth.passwordpara llamadores directos internos, mantén el puerto del Gateway protegido por firewall para que los clientes remotos que no pasan por el proxy no puedan acceder directamente.
Auditoría de seguridad
openclaw security audit marcará la autenticación trusted-proxy con un hallazgo de gravedad crítica. Esto es intencional: es un recordatorio de que estás delegando la seguridad a la configuración de tu proxy.
La auditoría comprueba:
- Advertencia/recordatorio crítico base
gateway.trusted_proxy_auth - Falta la configuración de
trustedProxies - Falta la configuración de
userHeader allowUsersvacío (permite cualquier usuario autenticado)allowLoopbackhabilitado para fuentes de proxy en el mismo host- Política de origen del navegador comodín o ausente en superficies expuestas de la Control UI
Solución de problemas
trusted_proxy_untrusted_source
trusted_proxy_untrusted_source
La solicitud no provino de una IP en
gateway.trustedProxies. Comprueba:- ¿La IP del proxy es correcta? (Las IP de contenedores Docker pueden cambiar).
- ¿Hay un balanceador de carga delante de tu proxy?
- Usa
docker inspectokubectl get pods -o widepara encontrar las IP reales.
trusted_proxy_loopback_source
trusted_proxy_loopback_source
OpenClaw rechazó una solicitud trusted-proxy con fuente loopback.Comprueba:
- ¿El proxy se conecta desde
127.0.0.1/::1? - ¿Intentas usar autenticación trusted-proxy con un proxy inverso loopback en el mismo host?
- Prefiere autenticación por token/contraseña para clientes internos del mismo host que no pasan por el proxy, o
- Enruta a través de una dirección de proxy de confianza que no sea loopback y mantén esa IP en
gateway.trustedProxies, o - Para un proxy inverso deliberado en el mismo host, establece
gateway.auth.trustedProxy.allowLoopback = true, mantén la dirección loopback engateway.trustedProxiesy asegúrate de que el proxy elimine o sobrescriba los encabezados de identidad.
trusted_proxy_user_missing
trusted_proxy_user_missing
El encabezado de usuario estaba vacío o faltaba. Comprueba:
- ¿Tu proxy está configurado para pasar encabezados de identidad?
- ¿El nombre del encabezado es correcto? (no distingue entre mayúsculas y minúsculas, pero la ortografía importa)
- ¿El usuario está realmente autenticado en el proxy?
trusted_proxy_missing_header_*
trusted_proxy_missing_header_*
Faltaba un encabezado obligatorio. Comprueba:
- La configuración de tu proxy para esos encabezados específicos.
- Si los encabezados se están eliminando en algún punto de la cadena.
trusted_proxy_user_not_allowed
trusted_proxy_user_not_allowed
El usuario está autenticado pero no está en
allowUsers. Agrégalo o elimina la lista de permitidos.trusted_proxy_origin_not_allowed
trusted_proxy_origin_not_allowed
La autenticación trusted-proxy tuvo éxito, pero el encabezado
Origin del navegador no superó las comprobaciones de origen de la Control UI.Comprueba:gateway.controlUi.allowedOriginsincluye el origen exacto del navegador.- No dependes de orígenes comodín a menos que quieras intencionalmente un comportamiento que permita todo.
- Si usas intencionalmente el modo de alternativa con encabezado Host,
gateway.controlUi.dangerouslyAllowHostHeaderOriginFallback=trueestá establecido deliberadamente.
WebSocket still failing
WebSocket still failing
Asegúrate de que tu proxy:
- Admita actualizaciones de WebSocket (
Upgrade: websocket,Connection: upgrade). - Pase los encabezados de identidad en las solicitudes de actualización de WebSocket (no solo HTTP).
- No tenga una ruta de autenticación separada para conexiones WebSocket.
Migración desde autenticación por token
Si estás migrando desde autenticación por token a trusted-proxy:Test the proxy independently
Prueba la configuración del proxy de forma independiente (curl con encabezados).
Relacionado
- Configuración — referencia de configuración
- Acceso remoto — otros patrones de acceso remoto
- Seguridad — guía completa de seguridad
- Tailscale — alternativa más simple para acceso solo por tailnet