claude-apps-gateway.md +353 −0 created
1> ## Documentation Index
2> Fetch the complete documentation index at: https://code.claude.com/docs/llms.txt
3> Use this file to discover all available pages before exploring further.
4
5# Puerta de enlace de aplicaciones Claude para Amazon Bedrock, Claude Platform en AWS, Google Cloud y Microsoft Foundry
6
7> Ejecute Claude Code a través de Amazon Bedrock, Claude Platform en AWS, Google Cloud o Microsoft Foundry detrás de una puerta de enlace autohospedada con inicio de sesión SSO, acceso a modelos por grupo y telemetría OTLP.
8
9<Note>
10 La puerta de enlace de aplicaciones Claude está diseñada para organizaciones que deben —o prefieren— enrutar la inferencia a través de su propio proveedor de nube, por ejemplo para cumplir con los requisitos de [residencia de datos](/docs/es/claude-apps-gateway-deploy#compliance-posture). Si no tiene este requisito y desea acceso a otras características como aprovisionamiento SCIM o Claude Code en web y dispositivos móviles, Claude Enterprise puede ser una mejor opción. Consulte la página de [disponibilidad de características](/docs/es/feature-availability) para una comparación completa de todos los métodos de implementación.
11</Note>
12
13Claude apps gateway es un servicio autohospedado que se sitúa entre los clientes de Claude Code de sus desarrolladores y su proveedor de modelos. Los desarrolladores inician sesión con su proveedor de identidad corporativo (IdP) en lugar de mantener claves API o credenciales de nube. La puerta de enlace mantiene la credencial ascendente, aplica el acceso a modelos y [configuraciones administradas](/docs/es/permissions#managed-settings) por grupo de IdP, y retransmite la telemetría de uso a su propia pila de observabilidad.
14
15Se incluye en el binario `claude`, por lo que el mismo ejecutable que ejecuta Claude Code en una computadora portátil ejecuta el servidor de puerta de enlace con `claude gateway --config gateway.yaml`.
16
17Esta página cubre:
18
19* [Por qué Claude apps gateway](#why-claude-apps-gateway), qué agrega sobre ejecutar el suyo propio, y cuándo algo más se ajusta mejor
20* Un [inicio rápido](#quickstart) con [requisitos previos](#prerequisites) que lleva una puerta de enlace de cero a un desarrollador que ha iniciado sesión
21* [Conectar desarrolladores](#connect-developers), incluida la configuración de la URL de la puerta de enlace a través de configuraciones administradas
22* [Disponibilidad y limitaciones](#availability-and-limitations) que cubre qué características de Claude Code funcionan a través de la puerta de enlace y qué soporta el servidor
23
24Las páginas complementarias profundizan más. La [referencia de configuración](/docs/es/claude-apps-gateway-config) cubre todas las opciones en el archivo YAML que escribe el inicio rápido, y la [guía de implementación](/docs/es/claude-apps-gateway-deploy) cubre la configuración por IdP, la implementación en Kubernetes y Cloud Run, y las operaciones.
25
26<h2 id="why-claude-apps-gateway">
27 Por qué puerta de enlace de aplicaciones Claude
28</h2>
29
30La [descripción general de la puerta de enlace](/docs/es/gateways) cubre qué hace una puerta de enlace y por qué ejecutaría una. La puerta de enlace de aplicaciones Claude es la propia puerta de enlace de Anthropic, integrada en el binario `claude` y probada junto con cada lanzamiento de Claude Code, por lo que reenvía los encabezados y campos de solicitud que Claude Code envía sin que los operadores mantengan una lista de permitidos separada. Una vez implementada, le proporciona:
31
32* **Credenciales**: la clave API ascendente o la credencial de nube vive solo en su infraestructura. Los desarrolladores se autentican con SSO corporativo y reciben tokens portadores de corta duración, por lo que la desvinculación ocurre en su IdP. Desaprovisione un usuario y su acceso a la puerta de enlace expira dentro de la duración de la sesión, una hora por defecto.
33* **Control de acceso**: sus grupos de IdP se asignan a listas de permitidos de modelos y políticas de [configuración administrada](/docs/es/permissions#managed-settings). La puerta de enlace aplica el acceso a modelos del lado del servidor, rechazando solicitudes de modelos no otorgados, y selecciona la política de configuración administrada de cada grupo, que la CLI aplica en el [nivel de configuración administrada](/docs/es/settings#settings-precedence). Diferentes equipos obtienen diferentes modelos, herramientas y permisos, y un desarrollador no puede anular lo que su política bloquea.
34* **Entrega de configuración**: la puerta de enlace entrega la configuración administrada a los clientes conectados por sí misma, reemplazando la [configuración administrada por servidor](/docs/es/server-managed-settings) de la consola de administrador de claude.ai.
35* **Telemetría**: cada destino configurado, como Datadog, Splunk o ClickHouse, recibe [métricas del Protocolo OpenTelemetry (OTLP)](/docs/es/monitoring-usage) con recuentos de tokens, modelo, identidad del usuario y latencia por defecto, con registros y trazas como activaciones opcionales por destino.
36* **Enrutamiento ascendente**: los clientes hablan la API de Mensajes de Anthropic a la puerta de enlace, y la puerta de enlace traduce para cada ascendente, ya sea Amazon Bedrock, [Plataforma Claude en AWS](/docs/es/claude-platform-on-aws), Plataforma de Agentes de Google Cloud, Microsoft Foundry, o la API de Anthropic, con conmutación por error entre ellos. Puede cambiar regiones, proveedores u orden de conmutación por error sin que los desarrolladores lo noten o reconfiguren.
37
38<Frame>
39 <img src="https://mintcdn.com/claude-code/st9_ZQOFsZa3cKFl/images/claude-gateway-architecture.svg?fit=max&auto=format&n=st9_ZQOFsZa3cKFl&q=85&s=560770d8f49bbd6f1ca7090ed1f13c03" alt="Diagrama que muestra clientes de Claude Code conectándose sobre HTTPS con tokens portadores a una puerta de enlace de aplicaciones Claude autohospedada dentro de su infraestructura, que inicia sesión de usuarios contra su IdP, almacena estado de autenticación en PostgreSQL, retransmite telemetría a su recopilador OTLP, y reenvía inferencia a Amazon Bedrock, Plataforma Claude en AWS, Google Cloud, Microsoft Foundry o la API de Anthropic" width="760" height="320" data-path="images/claude-gateway-architecture.svg" />
40</Frame>
41
42<Note>
43 El plano de datos de la puerta de enlace no envía nada a la infraestructura de Anthropic a menos que la API de Anthropic sea un ascendente configurado. Usted controla dónde van la telemetría, los registros de auditoría, la configuración administrada y la identidad de IdP de sus desarrolladores, y la puerta de enlace no envía ninguno de ellos a Anthropic. Para el tráfico restante que el proceso de CLI puede enviar y cómo cerrarlo, consulte [Postura de cumplimiento](/docs/es/claude-apps-gateway-deploy#compliance-posture).
44</Note>
45
46Para ver qué características de Claude Code funcionan a través de la puerta de enlace y qué soporta el servidor en sí, consulte [Disponibilidad y limitaciones](#availability-and-limitations) a continuación. Para decisiones como costo, derivación, ejecutar múltiples puertas de enlace y plataformas sin servidor, consulte la [guía de implementación](/docs/es/claude-apps-gateway-deploy#deployment).
47
48<h3 id="other-gateway-implementations">
49 Otras implementaciones de puerta de enlace
50</h3>
51
52Si ya ejecuta una puerta de enlace LLM o puerta de enlace API que cumple con sus necesidades, continúe usándola; [Otras puertas de enlace LLM](/docs/es/llm-gateway) cubre la configuración de Claude Code contra ella.
53
54La [referencia del protocolo de puerta de enlace](/docs/es/llm-gateway-protocol) documenta el contrato que Claude Code espera de cualquier puerta de enlace: los puntos finales que llama, los encabezados y campos de cuerpo a reenviar, y qué deja de funcionar cuando se eliminan. Una puerta de enlace de aplicaciones Claude en ejecución sirve un superconjunto de ese contrato en `GET /protocol`, agregando los puntos finales específicos de la puerta de enlace de aplicaciones Claude para inicio de sesión SSO, entrega de configuración administrada y telemetría. Obténgalo con `curl https://claude-gateway.internal.example.com/protocol` desde cualquier puerta de enlace implementada, como la que produce el [inicio rápido](#quickstart) a continuación.
55
56Los cambios importantes en el protocolo se anuncian con anticipación, pero no se garantiza compatibilidad hacia atrás indefinida.
57
58<h2 id="quickstart">
59 Inicio rápido
60</h2>
61
62Este inicio rápido recorre la ruta mínima: registre un cliente OAuth en su IdP, escriba un `gateway.yaml`, ejecute la puerta de enlace junto con Postgres con Docker Compose, y verifique el inicio de sesión de extremo a extremo. Utiliza un ascendente de Amazon Bedrock; la Plataforma de Claude en AWS, la Plataforma de Agentes de Google Cloud, Microsoft Foundry, y la API de Anthropic son igualmente compatibles intercambiando el bloque `upstreams` como se muestra en la [referencia de configuración](/docs/es/claude-apps-gateway-config#upstreams). Al final tiene una puerta de enlace a la que un desarrollador puede `/login`.
63
64<Note>
65 **Implemente en su red privada.** Claude Code solo se conecta a una puerta de enlace cuya dirección es privada. Esta es una protección de seguridad, porque una puerta de enlace confiable puede insertar configuración que ejecute comandos en máquinas de desarrolladores. Coloque la puerta de enlace detrás de un equilibrador de carga interno o VPN y asígnele un nombre de host que se resuelva solo a direcciones IP privadas.
66
67 Los puntos finales de puerta de enlace pública operados por Anthropic son la excepción: `/login` los acepta sobre `https://`. Estos son un conjunto pequeño y fijo de puertas de enlace que el propio Anthropic opera; no son una opción de implementación que pueda seleccionar o configurar. La lista se compila en Claude Code, por lo que ninguna configuración puede agregar un nombre de host a ella y ninguna puerta de enlace que aloje califica para la exención. {/* min-version: 2.1.206 */}Antes de v2.1.206, `/login` rechazaba esos puntos finales como cualquier otra dirección pública.
68</Note>
69
70<h3 id="prerequisites">
71 Requisitos previos
72</h3>
73
74Tenga estos en lugar antes de comenzar:
75
76| Lo que necesita | Detalles |
77| -------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
78| Claude Code v2.1.195 o posterior | El subcomando `claude gateway` y el flujo de inicio de sesión de la puerta de enlace se envían en v2.1.195. Las compilaciones públicas anteriores no las incluyen. Tanto la máquina que ejecuta el servidor de puerta de enlace como la máquina de cada desarrollador deben estar en v2.1.195 o posterior; ejecute `claude update` para obtener la última versión. {/* min-version: 2.1.198 */}La [Plataforma de Claude en AWS ascendente](/docs/es/claude-apps-gateway-config#claude-platform-on-aws) requiere Claude Code v2.1.198 o posterior en el servidor de puerta de enlace. |
79| Proveedor de identidad OpenID Connect (OIDC) | Okta, Microsoft Entra ID, Google Workspace, Keycloak, o Dex, u otro IdP compatible con OIDC como PingFederate. La puerta de enlace ejecuta el descubrimiento OIDC estándar y el flujo de código de autorización contra ella. SAML y LDAP no son compatibles. |
80| PostgreSQL 14 o posterior | Respalda el flujo de inicio de sesión del dispositivo, donde la devolución de llamada del navegador escribe y la CLI de sondeo lee, más contadores de límite de velocidad. Cualquier Postgres administrado funciona, incluido el nivel más pequeño. Sin límites de gasto configurados, la puerta de enlace almacena algunos KB de estado de autenticación de corta duración; con [límites de gasto](/docs/es/claude-apps-gateway-spend-limits), también mantiene tablas de gasto, auditoría e identidad duraderas que deben respaldarse. TLS a través de `?sslmode=require` se recomienda. |
81| Ascendente de modelo | Credenciales de Amazon Bedrock, credenciales de Plataforma de Claude en AWS, credenciales de Google Cloud, un recurso de Microsoft Foundry, o una clave API de Anthropic. Se admiten múltiples ascendentes con conmutación por error. |
82| HTTPS | La puerta de enlace debe ser accesible sobre `https://` desde computadoras portátiles de desarrolladores y desde cualquier navegador utilizado para el inicio de sesión; la puerta de enlace sirve la página de verificación del dispositivo en el mismo oyente. Proporcione un certificado TLS a través de `listen.tls`, o ejecute detrás de una entrada que termina TLS y establezca `listen.public_url`. Un origen `http://` simple se acepta solo en loopback, para desarrollo local. |
83| Dirección de red privada | En `/login`, Claude Code requiere que el nombre de host o la dirección IP de la puerta de enlace se resuelvan solo a direcciones privadas: RFC 1918, CGNAT `100.64.0.0/10`, ULA IPv6 `fc00::/7`, o loopback para desarrollo local. La verificación se ejecuta en cada IP resuelta, por lo que si alguna dirección a la que se resuelve el nombre es pública, `/login` rechaza la URL. Si las máquinas de desarrolladores enrutan HTTPS a través de un proxy corporativo, el inicio de sesión también requiere que el host del proxy se resuelva a direcciones privadas; si no es así, agregue el host de la puerta de enlace a `NO_PROXY` para que la CLI se conecte directamente. {/* min-version: 2.1.206 */}Los puntos finales de puerta de enlace operados por Anthropic son exentos de las verificaciones de dirección privada y proxy: `/login` los acepta sobre `https://` por coincidencia exacta de nombre de host, por lo que el requisito de red privada se aplica solo a una puerta de enlace que aloje usted mismo. Antes de v2.1.206, `/login` rechazaba un punto final operado por Anthropic como cualquier otra dirección pública. |
84| Tiempo de ejecución de Linux | El servidor de puerta de enlace solo se ejecuta en el binario nativo de Linux. macOS funciona para desarrollo local. Windows no es compatible como plataforma de servidor. |
85
86El servidor de puerta de enlace requiere el binario `claude` nativo; descargue una versión fija como se describe en [Instalar Claude Code](/docs/es/setup). El servidor utiliza características de tiempo de ejecución que no están disponibles cuando Claude Code se ejecuta bajo Node. Si ve `requires the native binary` al arrancar, cambie a uno de los métodos de instalación independientes.
87
88<h3 id="steps">
89 Pasos
90</h3>
91
92<Steps>
93 <Step title="Registre un cliente OAuth en su IdP">
94 Decida primero el nombre de host de la puerta de enlace, porque el URI de redirección debe coincidir con él. Cree una nueva aplicación web OIDC y establezca el URI de redirección en `https://claude-gateway.<your-domain>/oauth/callback`, donde el host es el mismo valor que establece como [`listen.public_url`](/docs/es/claude-apps-gateway-config#listen) en el paso 3. Anote el `client_id` y `client_secret`. Las instrucciones por IdP están en [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup).
95 </Step>
96
97 <Step title="Aprovisione una base de datos PostgreSQL">
98 Cualquier Postgres 14 o posterior funciona, incluido el nivel administrado más pequeño. La puerta de enlace ejecuta sus propias migraciones de esquema al arrancar, por lo que el usuario de la base de datos necesita permiso `CREATE TABLE`. Si su política de seguridad prohíbe DDL de roles de aplicación, pre-cree el esquema en su lugar; consulte [`store`](/docs/es/claude-apps-gateway-config#store).
99 </Step>
100
101 <Step title="Escriba gateway.yaml">
102 Los secretos se leen a través de la expansión `${ENV_VAR}` para que el archivo en sí pueda vivir en control de versiones. Use un nombre de host `public_url` que se resuelva a una IP privada en su red, porque `/login` rechaza direcciones públicas. La configuración mínima tiene cinco secciones, y todos los demás campos tienen un valor predeterminado:
103
104 ```yaml gateway.yaml theme={null}
105 listen:
106 host: 0.0.0.0
107 port: 8080
108 # Requerido detrás de cualquier proxy que termina TLS. Utilizado para el IdP
109 # redirect_uri y el documento de descubrimiento.
110 public_url: https://claude-gateway.internal.example.com
111
112 oidc:
113 issuer: https://login.example.com # debe servir /.well-known/openid-configuration
114 client_id: 0oa1example2
115 client_secret: ${OIDC_CLIENT_SECRET}
116 allowed_email_domains: [example.com] # rechazar id_tokens fuera de su organización
117 userinfo_fallback: true # para IdPs cuyo id_token omite email/groups; inofensivo de otra manera
118
119 session:
120 jwt_secret: ${GATEWAY_JWT_SECRET} # openssl rand -base64 32
121 ttl_hours: 1 # también limita la latencia de revocación en desaprovisionamiento de IdP
122
123 store:
124 postgres_url: ${GATEWAY_POSTGRES_URL} # agregue ?sslmode=require para Postgres administrado
125
126 upstreams:
127 - provider: bedrock
128 region: us-east-1
129 auth: {} # vacío: cadena de credenciales predeterminada de AWS
130 # (IRSA, rol de tarea EC2/ECS, variables de entorno, ~/.aws)
131
132 # Los modelos se traducen por ascendente automáticamente. El catálogo integrado
133 # asigna claude-opus-4-8 a us.anthropic.claude-opus-4-8 y así sucesivamente para cada
134 # modelo Claude compatible con Bedrock. Establezca false y agregue una lista `models:` para
135 # exponer solo modelos específicos.
136 auto_include_builtin_models: true
137 ```
138
139 Esta configuración es suficiente para un bucle de inicio de sesión funcional con el catálogo de modelos predeterminado de Bedrock. Una vez que se ejecute, agregue RBAC por grupo y configuración administrada a través de [`managed.policies`](/docs/es/claude-apps-gateway-config#managed), distribución de telemetría a través de [`telemetry`](/docs/es/claude-apps-gateway-config#telemetry), y conmutación por error de múltiples ascendentes, ARNs de rendimiento aprovisionado, o regiones no estadounidenses a través de [`models`](/docs/es/claude-apps-gateway-config#models).
140
141 <Note>
142 El ascendente de Bedrock necesita un principal de AWS con `bedrock:InvokeModel` y `bedrock:InvokeModelWithResponseStream` en los ARNs `inference-profile/us.anthropic.*` y los ARNs `foundation-model/anthropic.*` subyacentes, y acceso a modelos habilitado en la consola de Bedrock para los modelos Claude que desea. Suministre la credencial con IRSA en EKS, un rol de tarea de ECS, o un perfil de instancia de EC2 en lugar de claves estáticas. La [referencia `upstreams`](/docs/es/claude-apps-gateway-config#upstreams) tiene los detalles completos de IAM, la matriz de credenciales entre nubes, y los bloques `auth` para los otros proveedores.
143 </Note>
144 </Step>
145
146 <Step title="Ejecútelo">
147 Construya una imagen de contenedor alrededor del binario `claude` que cumpla con los [requisitos de imagen](/docs/es/claude-apps-gateway-deploy#container-image), luego ejecútela junto con Postgres:
148
149 ```yaml docker-compose.yaml theme={null}
150 services:
151 gateway:
152 image: <your-registry>/claude-gateway:<version>
153 ports: ["8080:8080"]
154 volumes: ["./gateway.yaml:/etc/claude/gateway.yaml:ro"]
155 environment:
156 OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET}
157 GATEWAY_JWT_SECRET: ${GATEWAY_JWT_SECRET}
158 GATEWAY_POSTGRES_URL: postgres://gw:pw@postgres/gateway
159 # Credenciales de AWS: en producción, omita estas y use un rol de instancia.
160 # Para pruebas locales de Compose, pase las suyas propias:
161 AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID}
162 AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY}
163 AWS_SESSION_TOKEN: ${AWS_SESSION_TOKEN}
164 depends_on:
165 postgres:
166 condition: service_healthy
167 postgres:
168 image: postgres:16-alpine
169 environment: { POSTGRES_USER: gw, POSTGRES_PASSWORD: pw, POSTGRES_DB: gateway }
170 healthcheck:
171 test: ["CMD-SHELL", "pg_isready -U gw"]
172 interval: 5s
173 volumes: ["pgdata:/var/lib/postgresql/data"]
174 volumes: { pgdata: }
175 ```
176
177 La puerta de enlace es un único binario de Linux que lee la configuración, ejecuta el descubrimiento OIDC contra su IdP, aplica sus migraciones de esquema de Postgres, construye clientes ascendentes, e inicia la escucha. El arranque es de cierre fallido para la configuración, la conexión de Postgres con un tiempo de espera de 5 segundos, el descubrimiento OIDC, y la construcción del cliente ascendente. Si alguno de esos es inaccesible o está mal configurado, la puerta de enlace sale con un error en lugar de servir tráfico en un estado degradado.
178
179 Un arranque exitoso no valida la ruta de inferencia, porque las credenciales de instancia de Bedrock y Agent Platform se resuelven en la primera solicitud, no al arrancar.
180
181 Observe stderr para la secuencia de arranque. Las líneas de registro utilizan el formato `[gateway] <timestamp> <level> <message>`, los eventos de auditoría son JSON de una sola línea con un campo `evt`, y un banner de inicio, omitido a continuación, se imprime entre las líneas de migración y escucha. Debería ver, en orden:
182
183 ```text theme={null}
184 {"ts":"2026-06-10T17:03:21.114Z","evt":"config.load","path":"/etc/claude/gateway.yaml","sha256":"…"}
185 [gateway] 2026-06-10T17:03:21.408Z info migration 1 applied
186 [gateway] 2026-06-10T17:03:21.512Z info claude gateway listening on http://0.0.0.0:8080
187 ```
188
189 Si el arranque sale antes de la línea `claude gateway listening on`, la última línea de stderr nombra el problema:
190
191 * un Postgres inaccesible
192 * un rol de Postgres sin permiso DDL
193 * un documento de descubrimiento OIDC inaccesible o inválido
194 * una violación del esquema de configuración con la ruta del campo ofensivo
195
196 Corrija y reinicie.
197
198 Si ya tiene una entrada que termina TLS, omita Compose y ejecute el binario directamente con `claude gateway --config gateway.yaml`. Establezca `public_url` en el origen de la entrada y vincule `listen` a una dirección de loopback o interna del clúster.
199 </Step>
200
201 <Step title="Verifique la superficie de autenticación">
202 Tres verificaciones confirman que la puerta de enlace puede autenticar a un usuario real antes de entregársela a un desarrollador.
203
204 Los ejemplos utilizan la URL pública de la puerta de enlace; para la configuración local de Compose sin una entrada, sustituya `http://localhost:8080` en las dos primeras verificaciones. La tercera verificación abre `verification_uri_complete`, que se construye a partir de `public_url`, por lo que para Compose local establezca `public_url: http://localhost:8080` en `gateway.yaml`, y agregue `http://localhost:8080/oauth/callback` como un segundo URI de redirección en el cliente OAuth del paso 1, porque la puerta de enlace construye el `redirect_uri` de IdP a partir de `public_url`. El enlace de verificación luego se abre en su navegador local.
205
206 En Windows PowerShell, ejecute `curl.exe`; el `curl` simple es un alias para `Invoke-WebRequest` y rechaza estas banderas.
207
208 Primero, obtenga el documento de descubrimiento, que confirma que la puerta de enlace está activa, la configuración es válida, y todas las verificaciones de arranque pasaron:
209
210 ```bash theme={null}
211 curl -s https://claude-gateway.internal.example.com/.well-known/oauth-authorization-server | jq
212 ```
213
214 ```json theme={null}
215 {
216 "issuer": "https://claude-gateway.internal.example.com",
217 "device_authorization_endpoint": "…/oauth/device_authorization",
218 "token_endpoint": "…/oauth/token",
219 "grant_types_supported": ["urn:ietf:params:oauth:grant-type:device_code", "refresh_token"]
220 }
221 ```
222
223 La respuesta incluye campos adicionales, como `response_types_supported` y `scopes_supported`.
224
225 Segundo, solicite una autorización de dispositivo, que confirma que el flujo de inicio de sesión del dispositivo funciona y Postgres es accesible y escribible:
226
227 ```bash theme={null}
228 curl -s -X POST https://claude-gateway.internal.example.com/oauth/device_authorization | jq
229 ```
230
231 ```json theme={null}
232 {
233 "device_code": "…",
234 "user_code": "WDJB-MJHT",
235 "verification_uri": "https://claude-gateway.internal.example.com/device",
236 "verification_uri_complete": "https://claude-gateway.internal.example.com/device?user_code=WDJB-MJHT",
237 "expires_in": 600,
238 "interval": 5
239 }
240 ```
241
242 Tercero, pruebe la rama del navegador abriendo `verification_uri_complete` en un navegador y confirmando el código. Debería ser redirigido a la página de inicio de sesión de su IdP, y después de iniciar sesión, aterrizar de nuevo en la puerta de enlace con una confirmación de inicio de sesión.
243
244 Use la primera verificación fallida para localizar el problema:
245
246 * **Primera verificación falla**: el arranque no se completó; verifique stderr
247 * **Segunda verificación falla**: Postgres no es accesible desde la puerta de enlace o el rol no puede escribir; verifique la cadena de conexión y los permisos
248 * **Tercera verificación no llega al IdP**: verifique que el URI de redirección de IdP coincida exactamente con `https://<gateway>/oauth/callback`
249 * **Tercera verificación llega al IdP pero rebota con un error**: lea el registro de auditoría de la puerta de enlace, que registra cada rechazo de autenticación con la razón, como `email domain not allowed`
250 </Step>
251
252 <Step title="Inicie sesión de un desarrollador">
253 Este último paso ocurre en una máquina de desarrollador, no en el servidor. Establezca `forceLoginMethod` en `"gateway"` y `forceLoginGatewayUrl` en la `public_url` de su puerta de enlace en el [archivo de configuración administrada](/docs/es/settings#settings-files) de esa máquina, luego ejecute `/login`, presione Intro en la pantalla **Cloud gateway**, y complete el inicio de sesión del navegador. [Establezca la URL de la puerta de enlace](#set-the-gateway-url) a continuación cubre la distribución de ambas claves a escala.
254 </Step>
255</Steps>
256
257<h2 id="connect-developers">
258 Conectar desarrolladores
259</h2>
260
261Los desarrolladores se conectan desde sus propias computadoras portátiles con un inicio de sesión de navegador, usando su cuenta de trabajo corporativa. No necesitan una cuenta de claude.ai, una clave API, o una suscripción, porque las solicitudes al modelo van a través de la puerta de enlace usando la credencial ascendente de la organización. La conexión es impulsada por la [configuración administrada del lado del cliente](/docs/es/claude-apps-gateway-config#client-side-managed-settings) que inserta a través de MDM, por lo que no hay configuración manual en el lado del desarrollador; esta sección cubre lo que configura el administrador.
262
263La CLI toma la huella digital del certificado TLS de hoja de la puerta de enlace en la primera conexión y la fija por nombre de host. Publique la huella digital SHA-256 esperada junto con la URL de la puerta de enlace para que los desarrolladores tengan algo con lo que comparar. Obtenga la huella digital del archivo de certificado con `openssl x509 -noout -fingerprint -sha256 -in cert.pem`; el indicador `/login` muestra los primeros 16 caracteres del resumen como hexadecimal minúscula sin separadores.
264
265Cuando el certificado rota, cada desarrollador ve el indicador de confianza nuevamente, por lo que trate las rotaciones como un evento planificado y republique la huella digital.
266
267Una vez conectado, el [selector de modelos](/docs/es/model-config) muestra los modelos en la lista de permitidos `availableModels` del desarrollador, la configuración administrada se aplica al inicio y se actualiza cada hora, y la telemetría se enruta a su recopilador. Las sesiones se actualizan silenciosamente antes de la expiración de `ttl_hours`, y una actualización fallida después del desaprovisionamiento de IdP solicita un nuevo inicio de sesión.
268
269<h3 id="set-the-gateway-url">
270 Establecer la URL de la puerta de enlace
271</h3>
272
273Establezca ambas claves en el archivo de [configuración administrada](/docs/es/settings#settings-files) por sistema operativo que implementa a través de MDM o directamente en el disco, y `/login` abre directamente en la pantalla **Cloud gateway** con la URL rellenada:
274
275```json theme={null}
276{
277 "forceLoginMethod": "gateway",
278 "forceLoginGatewayUrl": "https://claude-gateway.internal.example.com"
279}
280```
281
282El desarrollador presiona Intro para conectarse. El indicador de huella digital TLS de primera conexión aún aparece.
283
284No hay opción de puerta de enlace en el selector de inicio de sesión para que un desarrollador seleccione manualmente, y `forceLoginGatewayUrl` se ignora en los archivos de configuración propios de un desarrollador. `forceLoginMethod` solo, sin una URL, deja al desarrollador en un mensaje "Contacte a su administrador de TI". Ambas claves pertenecen al archivo que inserta en máquinas, no en el bloque `managed.policies[].cli` de la puerta de enlace, que solo llega a clientes que ya están conectados.
285
286<h3 id="ci-pipelines-and-remote-machines">
287 Canalizaciones de CI y máquinas remotas
288</h3>
289
290No hay flujo de token de servicio para canalizaciones desatendidas. El inicio de sesión de la puerta de enlace siempre ejecuta el flujo de dispositivo del navegador, por lo que un trabajo de CI sin un desarrollador para aprobar el inicio de sesión no puede autenticarse; configure esos contra su proveedor directamente.
291
292Una vez que un desarrollador ha iniciado sesión, cada invocación de Claude Code en esa máquina usa la sesión de la puerta de enlace, incluidas las ejecuciones no interactivas de `claude -p` y sesiones iniciadas por el SDK del Agente, y la [política de la puerta de enlace se aplica a todas ellas](/docs/es/claude-apps-gateway-config#managed).
293
294El flujo de dispositivo separa la CLI de sondeo de la aprobación del navegador, por lo que una caja de desarrollo remota sin pantalla aún funciona: el desarrollador ejecuta `/login` sobre SSH en la máquina remota y abre el enlace de verificación en el navegador en su computadora portátil.
295
296<h3 id="what’s-enforced-on-developers">
297 Qué se aplica en los desarrolladores
298</h3>
299
300Estas garantías se aplican a cada sesión de puerta de enlace conectada.
301
302* **Acceso a modelos**: las solicitudes de modelos que la política no otorga devuelven 400, y el selector `/model` se filtra a la lista de permitidos `availableModels` de la política. Establezca [`enforceAvailableModels: true`](/docs/es/model-config#default-model-behavior) en la política para que la opción Predeterminado se resuelva a un modelo dentro de `availableModels` en lugar de al predeterminado integrado de Claude Code; sin él, Predeterminado permanece seleccionable y se rechaza en el tiempo de solicitud si ese modelo no se otorga.
303* **Destino de telemetría**: cuando se configura [reenvío de telemetría](/docs/es/claude-apps-gateway-config#telemetry), el punto final de exportación OTLP se fija a la puerta de enlace, y la configuración insertada por la puerta de enlace anula las variables `OTEL_*` configuradas localmente.
304* **Credenciales**: el token de la puerta de enlace es la única credencial de la sesión. `ANTHROPIC_AUTH_TOKEN`, `ANTHROPIC_API_KEY`, `apiKeyHelper`, y cualquier inicio de sesión anterior de claude.ai se ignoran mientras se conecta, por lo que los desarrolladores no necesitan cerrar sesión de claude.ai primero.
305* **Configuración administrada**: las claves bloqueadas no se pueden anular localmente. La CLI aplica la política al inicio y en cada sondeo cada hora.
306* **Inicio**: las sesiones conectadas salen al inicio con un error después de aproximadamente 10 segundos cuando la puerta de enlace es inaccesible, en lugar de iniciarse sin su configuración.
307* **Desaprovisionamiento**: una sesión cuyo usuario está deshabilitado en el IdP expira dentro de `ttl_hours` cuando la siguiente actualización falla.
308
309<h3 id="what-the-organization-can-see">
310 Qué puede ver la organización
311</h3>
312
313La telemetría de uso lleva la identidad del desarrollador, recuentos de tokens, modelo y latencia al recopilador de la organización. La puerta de enlace no registra ni almacena contenido de indicación o finalización. Si se recopila telemetría más rica como registros y trazas, que puede incluir comandos y rutas de archivo, es la [opción por destino](/docs/es/claude-apps-gateway-config#telemetry) de la organización.
314
315<h2 id="availability-and-limitations">
316 Disponibilidad y limitaciones
317</h2>
318
319La tabla cubre qué características de Claude Code funcionan cuando los desarrolladores se conectan a través de la puerta de enlace, y qué soporta el servidor de puerta de enlace en sí. Donde algo no es compatible, la columna Notas proporciona la alternativa.
320
321La puerta de enlace entrega los valores [`anthropic-beta`](https://platform.claude.com/docs/es/api/beta-headers) que la CLI envía a cada ascendente, por lo que los operadores no mantienen una lista de permitidos de beta. Para Amazon Bedrock, que ignora el encabezado, la puerta de enlace mueve los valores al campo `anthropic_beta` del cuerpo de la solicitud; los otros ascendentes reciben el encabezado como se envía.
322
323El conjunto de beta de sesión de puerta de enlace de la CLI omite betas solo de primera parte y la beta de ttl de caché extendido, por lo que esas filas a continuación muestran como no disponibles.
324
325| Característica | Estado | Notas |
326| ---------------------------------------------------------------------------------------------------------------------------- | ------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
327| Reenvío de inferencia (Amazon Bedrock, Claude Platform en AWS, Agent Platform de Google Cloud, Microsoft Foundry, Anthropic) | Disponible | Con traducción de modelos por ascendente y conmutación por error. El ascendente de Amazon Bedrock utiliza el punto final `bedrock-runtime` y la cadena de credenciales predeterminada de AWS; el [punto final Mantle](/docs/es/amazon-bedrock#use-the-mantle-endpoint) de Amazon Bedrock no es un ascendente compatible. El [ascendente Claude Platform en AWS](/docs/es/claude-apps-gateway-config#claude-platform-on-aws) requiere Claude Code v2.1.198 o posterior en el servidor de puerta de enlace. |
328| Acceso a modelos y configuración administrada por grupo de IdP | Disponible | El acceso a modelos se aplica del lado del servidor; la configuración administrada se entrega por grupo de IdP y se aplica por la CLI en el [nivel de configuración administrada](/docs/es/settings#settings-precedence) |
329| Distribución de telemetría (OTLP/HTTP) | Disponible | Identidad marcada por exportación; ambas codificaciones protobuf y JSON |
330| Proveedores de identidad OIDC | Disponible | Cualquier IdP compatible con OIDC; la puerta de enlace ejecuta el descubrimiento OIDC estándar y el flujo de código de autorización. Consulte [Configuración del proveedor de identidad](/docs/es/claude-apps-gateway-deploy#identity-provider-setup) para la configuración por IdP |
331| Límites de gasto por usuario y por grupo | Disponible | Consulte [Límites de gasto](/docs/es/claude-apps-gateway-spend-limits) |
332| Búsqueda web del lado del servidor | No disponible | La CLI no puede ver qué proveedor ascendente enruta la puerta de enlace, por lo que no puede verificar la compatibilidad de búsqueda web y deshabilita WebSearch en sesiones de puerta de enlace |
333| Almacenamiento en caché de indicación estándar | Disponible | Los puntos de interrupción `cache_control` se reenvían a cada ascendente |
334| TTL de caché de 1 hora | No disponible | La CLI omite la beta de ttl de caché extendido en sesiones de puerta de enlace, porque no todos los ascendentes a los que la puerta de enlace puede enrutar soportan el TTL de 1 hora, por lo que el almacenamiento en caché de indicación a través de la puerta de enlace utiliza el TTL de 5 minutos; consulte la nota de encabezado de beta anterior |
335| Modo automático | Disponible | Sigue las [reglas del proveedor de terceros](/docs/es/permission-modes#enable-auto-mode-on-bedrock-agent-platform-or-foundry): solo los modelos elegibles en proveedores de terceros pueden usarlo. {/* min-version: 2.1.207 */}Antes de v2.1.207, el modo automático en sesiones de puerta de enlace requería establecer `CLAUDE_CODE_ENABLE_AUTO_MODE=1`, entregable a través del bloque `env` de política administrada |
336| Optimizaciones solo de primera parte como alcance de caché global y herramientas eficientes en tokens | No disponible | La CLI no las habilita en sesiones de puerta de enlace; consulte la nota de encabezado de beta anterior |
337| OTLP/gRPC | No compatible | OTLP sobre HTTP solo |
338| SAML, LDAP y otra autenticación no OIDC | No compatible | Solo OIDC. Frente con un puente OIDC si es necesario |
339| Multi-inquilino (múltiples emisores OIDC) | No compatible | Un emisor por puerta de enlace. Ejecute instancias separadas |
340| Servidor Windows | No compatible | Implemente en Linux. macOS solo para desarrollo local |
341| Gráfico Helm | No disponible | La puerta de enlace se ejecuta como un Deployment sin estado estándar; consulte la [guía de implementación](/docs/es/claude-apps-gateway-deploy#kubernetes) |
342| Interfaz de usuario de administrador | No disponible | La configuración es el archivo YAML; reimplemente para cambiarlo |
343
344<h2 id="next-steps">
345 Próximos pasos
346</h2>
347
348El inicio rápido lo deja con una configuración mínima ejecutándose bajo Docker Compose. Para llevarlo más lejos:
349
350* Expanda `gateway.yaml` más allá de la configuración mínima, por ejemplo para agregar RBAC por grupo, conmutación por error de múltiples ascendentes, o destinos de telemetría. La [referencia de configuración](/docs/es/claude-apps-gateway-config) cubre cada opción.
351* Pase de Compose a una implementación de producción en Kubernetes o Cloud Run, configure su IdP correctamente, y revise el modelo de seguridad. La [guía de implementación y operaciones](/docs/es/claude-apps-gateway-deploy) cubre la configuración por IdP, los requisitos de imagen de contenedor, sondeos de salud y solución de problemas.
352* Coloque límites de gasto en desarrolladores individuales o grupos para que una carga de trabajo descontrolada no pueda consumir todo su compromiso. [Límites de gasto](/docs/es/claude-apps-gateway-spend-limits) cubre la API de administrador y cómo funciona la aplicación.
353* Para un ejemplo completo trabajado en Google Cloud, con Cloud Run, Cloud SQL y Secret Manager, consulte [Implementar en Google Cloud](/docs/es/claude-apps-gateway-on-gcp).