Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
APLICA A: desarrollador | Básico | Básico v2 | Estándar | Estándar v2 | Premium | Premium v2
Con la compatibilidad con el servidor MCP en API Management, puede exponer y controlar el acceso a los servidores MCP y sus herramientas. En este artículo se describe cómo proteger el acceso a los servidores MCP administrados en API Management, incluidos los servidores MCP expuestos desde las API REST administradas y los servidores MCP existentes hospedados fuera de API Management.
Puede asegurar el acceso entrante al servidor MCP (desde un cliente MCP a API Management), el acceso saliente (desde API Management al servidor MCP), o ambos.
Protección del acceso entrante
Autenticación basada en claves
Si el servidor MCP está protegido con una clave de suscripción de API Management pasada en un Ocp-Apim-Subscription-Key encabezado, los clientes de MCP pueden presentar la clave en las solicitudes entrantes y el servidor MCP puede validar la clave. Por ejemplo, en Visual Studio Code, puede agregar una headers sección a la configuración del servidor MCP para requerir la clave de suscripción en los encabezados de solicitud:
{
"name": "My MCP Server",
"type": "remote",
"url": "https://my-api-management-instance.azure-api.net/my-mcp-server",
"transport": "streamable-http",
"headers": {
"Ocp-Apim-Subscription-Key": "<subscription-key>"
}
}
Nota:
Administre de forma segura las claves de suscripción mediante la configuración del área de trabajo de Visual Studio Code o las entradas seguras.
Autenticación basada en tokens (OAuth 2.1 con el identificador de Microsoft Entra)
Los clientes de MCP pueden presentar tokens o JWT de OAuth emitidos por Microsoft Entra ID usando un encabezado Authorization que son validados por API Management.
Por ejemplo, use la directiva validate-azure-ad-token para validar los tokens de identificador de Entra de Microsoft:
<validate-azure-ad-token tenant-id="your-entra-tenant-id" header-name="Authorization" failed-validation-httpcode="401" failed-validation-error-message="Unauthorized. Access token is missing or invalid.">
<client-application-ids>
<application-id>your-client-application-id</application-id>
</client-application-ids>
</validate-azure-ad-token>
Reenvío de tokens al back-end
Los encabezados de solicitud se reenvían automáticamente (con ciertas exclusiones) a las invocaciones de la herramienta MCP, lo que simplifica la integración con las API posteriores que se basan en encabezados para el enrutamiento, el contexto o la autenticación.
Si necesita reenvío explícito del Authorization encabezado para validar las solicitudes entrantes, puede usar uno de los métodos siguientes:
Defina
Authorizationexplícitamente como un encabezado necesario en la configuración de la API y reenvíe el encabezado en laOutbounddirectiva.Fragmento de código de directiva de ejemplo:
<!-- Forward Authorization header to backend --> <set-header name="Authorization" exists-action="override"> <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> </set-header>Use el administrador de credenciales y las directivas de API Management (
get-authorization-context,set-header) para reenviar el token de forma segura. Consulte Protección del acceso saliente para obtener más información.
Para obtener más opciones y ejemplos de autorización de entrada, consulte:
Ejemplo de autorización del servidor MCP con metadatos de recursos protegidos (PRM)
Protección de servidores MCP remotos mediante Azure API Management (experimental)
Protección del acceso saliente
Use el administrador de credenciales de API Management para insertar tokens de OAuth 2.0 de forma segura para las solicitudes de API de back-end realizadas por las herramientas del servidor MCP.
Pasos para configurar el acceso saliente basado en OAuth 2
Paso 1: Registre una aplicación en el proveedor de identidades.
Paso 2: Cree un proveedor de credenciales en API Management vinculado al proveedor de identidades.
Paso 3: Configure las conexiones en el administrador de credenciales.
Paso 4: Aplique directivas de API Management para capturar y adjuntar credenciales dinámicamente.
Por ejemplo, la siguiente directiva recupera un token de acceso del administrador de credenciales y lo establece en el Authorization encabezado de la solicitud saliente:
<!-- Add to inbound policy. -->
<get-authorization-context
provider-id="your-credential-provider-id"
authorization-id="auth-01"
context-variable-name="auth-context"
identity-type="managed"
ignore-error="false" />
<!-- Attach the token to the backend call -->
<set-header name="Authorization" exists-action="override">
<value>@("Bearer " + ((Authorization)context.Variables.GetValueOrDefault("auth-context"))?.AccessToken)</value>
</set-header>
Para obtener una guía paso a paso para llamar a un back-end de ejemplo mediante credenciales generadas en el administrador de credenciales, consulte Configuración del administrador de credenciales: GitHub.