Sdílet prostřednictvím


Zabezpečený přístup k serverům MCP ve službě API Management

PLATÍ PRO: Vývojář | Základní | Základní v2 | Standardní | Standardní v2 | Premium | Premium v2

Díky podpoře serveru MCP ve službě API Management můžete zveřejnit a řídit přístup k serverům MCP a jejich nástrojům. Tento článek popisuje, jak zabezpečit přístup k serverům MCP spravovaným ve službě API Management, včetně serverů MCP vystavených ze spravovaných rozhraní REST API a stávajících serverů MCP hostovaných mimo službu API Management.

Můžete zabezpečit příchozí přístup k serveru MCP (z klienta MCP do služby API Management) i odchozí přístup (ze služby API Management na server MCP).

Zabezpečený příchozí přístup

Ověřování na základě klíčů

Pokud je server MCP chráněný klíčem předplatného služby API Management předaným v Ocp-Apim-Subscription-Key hlavičce, klienti MCP mohou klíč prezentovat v příchozích požadavcích a server MCP může klíč ověřit. Například v editoru Visual Studio Code můžete do konfigurace serveru MCP přidat headers oddíl, který vyžaduje klíč předplatného v hlavičce požadavku:

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

Poznámka:

Bezpečně spravujte klíče předplatného pomocí nastavení pracovního prostoru editoru Visual Studio Code nebo zabezpečených vstupů.

Ověřování na základě tokenů (OAuth 2.1 s ID Microsoft Entra)

Klienti MCP můžou prezentovat tokeny OAuth nebo JWT vydané ID Microsoft Entra pomocí Authorization hlavičky a ověřené službou API Management.

K ověření tokenů ID Microsoft Entra použijte například zásadu validate-azure-ad-token :

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

Předávání tokenů do back-endu

Hlavičky požadavků se automaticky předávají (s určitými vyloučeními) do vyvolání nástrojů MCP, což zjednodušuje integraci s podřízenými rozhraními API, která spoléhají na hlavičky pro směrování, kontext nebo ověřování.

Pokud k ověření příchozích Authorization požadavků vyžadujete explicitní předávání hlavičky, můžete použít jeden z následujících přístupů:

  • Explicitně definujte Authorization jako povinnou hlavičku v nastavení rozhraní API a předejte hlavičku v zásadě Outbound.

    Příklad fragmentu zásad:

    <!-- Forward Authorization header to backend --> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> 
    </set-header> 
    
  • K bezpečnému předávání tokenu použijte správce přihlašovacích údajů a zásady služby API Management (get-authorization-context, set-header). Podrobnosti najdete v tématu Zabezpečený odchozí přístup .

Další možnosti a ukázky příchozí autorizace najdete v tématech:

Zabezpečený odchozí přístup

Pomocí správce přihlašovacích údajů služby API Management můžete bezpečně vkládat tokeny OAuth 2.0 pro požadavky back-endového rozhraní API provedené nástroji serveru MCP.

Postup konfigurace odchozího přístupu založeného na OAuth 2

Krok 1: Zaregistrujte aplikaci ve zprostředkovateli identity.

Krok 2: Vytvořte zprostředkovatele přihlašovacích údajů ve službě API Management propojené s zprostředkovatelem identity.

Krok 3: Nakonfigurujte připojení v rámci správce přihlašovacích údajů.

Krok 4: Použijte zásady služby API Management k dynamickému načítání a připojování přihlašovacích údajů.

Například následující zásada načte přístupový token ze správce přihlašovacích údajů a nastaví ho v Authorization hlavičce odchozího požadavku:

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

Podrobný průvodce voláním ukázkového back-endu pomocí přihlašovacích údajů vygenerovaných ve správci přihlašovacích údajů najdete v tématu Konfigurace správce přihlašovacích údajů – GitHub.