Partilhar via


Acesso seguro a servidores MCP no Gerenciamento de API

APLICA-SE A: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2

Com o suporte ao servidor MCP no Gerenciamento de API, você pode expor e controlar o acesso aos servidores MCP e suas ferramentas. Este artigo descreve como proteger o acesso a servidores MCP gerenciados no Gerenciamento de API, incluindo servidores MCP expostos a partir de APIs REST gerenciadas e servidores MCP existentes hospedados fora do Gerenciamento de API.

Você pode proteger o acesso de entrada ao servidor MCP (de um cliente MCP para o Gerenciamento de API) e o acesso de saída (do Gerenciamento de API para o servidor MCP).

Acesso de entrada seguro

Autenticação baseada em chave

Se o servidor MCP estiver protegido com uma chave de assinatura do Gerenciamento de API passada em um Ocp-Apim-Subscription-Key cabeçalho, os clientes MCP poderão apresentar a chave nas solicitações de entrada e o servidor MCP poderá validar a chave. Por exemplo, no Visual Studio Code, você pode adicionar uma headers seção à configuração do servidor MCP para exigir a chave de assinatura nos cabeçalhos de solicitação:

{
  "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>"
  }
}

Observação

Gerencie chaves de assinatura com segurança usando configurações de espaço de trabalho do Visual Studio Code ou entradas seguras.

Autenticação baseada em token (OAuth 2.1 com ID do Microsoft Entra)

Os clientes MCP podem apresentar tokens OAuth ou JWTs emitidos pelo Microsoft Entra ID usando um Authorization cabeçalho e validados pelo Gerenciamento de API.

Por exemplo, use a política validate-azure-ad-token para validar tokens de ID do Microsoft Entra:

<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>

Encaminhar tokens para back-end

Os cabeçalhos dos pedidos são automaticamente encaminhados (com certas exclusões) para as invocações das ferramentas MCP, simplificando a integração com APIs downstream que dependem de cabeçalhos para encaminhamento, contexto ou autenticação.

Se precisar de encaminhamento explícito do cabeçalho Authorization para validar pedidos recebidos, pode usar uma das seguintes abordagens:

  • Defina Authorization explicitamente como um cabeçalho obrigatório nas configurações da API e encaminhe o cabeçalho na Outbound política.

    Exemplo de trecho de política:

    <!-- Forward Authorization header to backend --> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> 
    </set-header> 
    
  • Use o gerenciador de credenciais do Gerenciamento de API e as políticas (get-authorization-context, set-header) para encaminhar o token com segurança. Consulte Acesso de saída seguro para obter detalhes.

Para obter mais opções de autorização de entrada e exemplos, consulte:

Acesso de saída seguro

Use o gerenciador de credenciais do Gerenciamento de API para injetar com segurança tokens OAuth 2.0 para solicitações de API de back-end feitas por ferramentas de servidor MCP.

Etapas para configurar o acesso de saída baseado em OAuth 2

1º Passo: Registre um aplicativo no provedor de identidade.

2º Passo: Crie um provedor de credenciais no Gerenciamento de API vinculado ao provedor de identidade.

3º Passo: Configure conexões dentro do gerenciador de credenciais.

4º passo: Aplique políticas de Gerenciamento de API para buscar e anexar credenciais dinamicamente.

Por exemplo, a política a seguir recupera um token de acesso do gerenciador de credenciais e o define no Authorization cabeçalho da solicitação de saída:

<!-- 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 obter um guia passo a passo para chamar um exemplo de back-end usando credenciais geradas no gerenciador de credenciais, consulte Configurar o gerenciador de credenciais - GitHub.