Usar la intercambio de tokens con ToolHive y Okta para el servidor MCP a autenticación a GraphQL
En este artículo explicamos de manera práctica cómo implementar intercambio de tokens entre Okta y ToolHive para que un servidor MCP autentique llamadas a una API GraphQL, y cómo esto mejora la seguridad y el rastro de auditoría en entornos reales.
Entorno y objetivo: simulamos un servicio API backend que exige tokens con aud igual a backend y permisos o scopes que incluyan backend-api:read. No queremos exponer directamente ese API a clientes de IA sino solo a través del servidor MCP. El servidor MCP por su parte exige tokens con aud igual a mcpserver y scope mcp:tools:call. Ambos servicios están en el mismo realm de Okta, pero usamos servidores de autorización distintos para asegurar audiencias diferentes y habilitar el intercambio de tokens.
Conceptos clave: aud identifica el destinatario previsto del token y scopes define permisos concretos. Solo los tokens que contengan la audiencia y los scopes esperados autorizan el acceso al servicio.
Configuración en Okta: creamos dos Authorization Servers, uno para el MCP y otro para el backend. En el primero añadimos el scope mcp:tools:call y en el segundo backend-api:read. Para permitir intercambio de tokens, en el Authorization Server del backend se añade el servidor mcpserver como trusted en las settings.
Aplicaciones: se crean dos aplicaciones en Okta. Un cliente OIDC para VSCode con client ID y secreto y Redirect URIs que coincidan con los que usa VSCode. Y una aplicación tipo API Services para ToolHive que hará el Token Exchange. En la configuración de esa app desactivamos Require Demonstrating Proof of Possession si aún no es compatible con ToolHive.
Políticas de token: Okta no emite tokens sin políticas que lo permitan. Definimos una policy en el mcpserver AS que permita al cliente VSCode pedir scopes openid y mcp:tools:call. En el backend AS definimos una policy para el ToolHive client que permita el grant Token Exchange y añada el scope backend-api:read.
Ejecutar el servidor GraphQL: clona el demo del servidor Apollo MCP, copia el archivo de ejemplo de variables de entorno y configura OKTA_DOMAIN, OKTA_ISSUER, OKTA_AUDIENCE como backend y REQUIRED_SCOPES como backend-api:read. Habilita REQUIRE_AUTH y arranca el servidor con npm install y npm start. El servidor validará tokens esperando aud backend y el scope requerido.
Configurar y ejecutar ToolHive: ToolHive actúa como proxy MCP y realiza el intercambio de tokens. En la configuración del MCP server ajustamos transport.auth.servers para que apunte al Authorization Server del backend. Al ejecutar thv run o thv proxy se pasan parámetros que indican la audiencia OIDC esperada para MCP, el issuer y JWKS del servidor mcpserver, y los parámetros de token exchange que señalan audiencia backend, client ID y secret del ToolHive client, scopes backend-api:read y el token endpoint del backend AS.
Parámetros relevantes en la ejecución: --oidc-audience establece la aud que debe tener el token entrante de VSCode para aceptar la conexión; --token-exchange-audience indica la aud que queremos obtener tras el intercambio; --token-exchange-client-id y --token-exchange-client-secret son las credenciales del cliente ToolHive autorizadas para realizar el intercambio; --token-exchange-scopes determina los permisos solicitados para el token final; --token-exchange-url es el endpoint de token del backend AS.
Flujo desde VSCode: al añadir el servidor MCP en VSCode y pulsar Start, VSCode solicita autenticación contra Okta. VSCode recibe un token emitido por el servidor mcpserver con aud mcpserver y scope mcp:tools:call. ToolHive verifica esa audiencia y a continuación llama al endpoint de intercambio de Okta para obtener un token con aud backend y scope backend-api:read. Ese token se inserta en la cabecera Authorization Bearer y se reenvía al API GraphQL backend, que valida aud y scopes y responde a la llamada.
Intercambio de tokens bajo el capó: el middleware de autenticación de ToolHive valida emisión, firma y audiencia del token inicial. Luego el middleware de Token Exchange solicita a Okta un token destinado al servicio externo. De ese modo el servidor MCP no necesita almacenar credenciales persistentes del usuario ni secretos de larga duración, y cada acceso al backend queda asociado a la identidad del usuario real, lo que mejora la trazabilidad y el cumplimiento.
Beneficios: el intercambio de tokens aporta seguridad al evitar credenciales embebidas, permite emitir tokens de corta duración con los scopes mínimos necesarios y facilita auditoría por usuario. Esto es especialmente útil para soluciones de inteligencia artificial que consumen APIs seguras, para arquitecturas multitenant y para integraciones con servicios en la nube.
Sobre Q2BSTUDIO: en Q2BSTUDIO somos una empresa de desarrollo de software y aplicaciones a medida especializada en inteligencia artificial, ciberseguridad y servicios cloud. Ofrecemos soluciones que incluyen desarrollo de software a medida, integración de IA para empresas, agentes IA y dashboards en Power BI, además de servicios cloud en AWS y Azure y auditoría y pentesting. Si busca desarrollar una aplicación a medida que integre autenticación segura y arquitecturas basadas en tokens puede conocer nuestras capacidades en desarrollo de aplicaciones y software a medida en desarrollo de aplicaciones y software a medida y explorar cómo aplicamos inteligencia artificial en soluciones empresariales en servicios de inteligencia artificial para empresas.
Palabras clave y enfoque SEO: aplicaciones a medida, software a medida, inteligencia artificial, ciberseguridad, servicios cloud aws y azure, servicios inteligencia de negocio, ia para empresas, agentes IA y power bi aparecen integradas en esta guía para mejorar el posicionamiento de soluciones seguras y modernas que combinan autenticación, token exchange y arquitecturas cloud.
Resumen final: implementar intercambio de tokens entre Okta y ToolHive permite que un servidor MCP actúe como mediador seguro entre clientes y APIs protegidas. La configuración incluye separación lógica de Authorization Servers, políticas de tokens adecuadas y una app ToolHive autorizada para realizar Token Exchange. El resultado es una solución escalable, auditable y compatible con prácticas modernas de seguridad, ideal para proyectos de software a medida y plataformas que emplean IA y servicios cloud.
Comentarios