Schützen des Zugriffs auf MCP-Server in API Management

GILT FÜR: Developer | Basic | Basic v2 | Standard | Standard v2 | Premium | Premium v2

Durch die Nutzung von MCP-Server-Unterstützung im API-Management können Sie den Zugriff auf MCP-Server und deren Tools freistellen und steuern. In diesem Artikel wird beschrieben, wie Sie den Zugriff auf MCP-Server, die in API Management verwaltet werden, schützen, einschließlich MCP-Servern, die über verwaltete REST-APIs verfügbar gemacht werden, und vorhandenen MCP-Servern, die außerhalb von API Management gehostet werden.

Sie können den eingehenden Zugriff auf den MCP-Server (von einem MCP-Client zu API Management) und ausgehenden Zugriff (von API Management zum MCP-Server) schützen.

Schützen des eingehenden Zugriffs

Schlüsselbasierte Authentifizierung

Wenn der MCP-Server mit einem API-Management-Abonnementschlüssel im Header Ocp-Apim-Subscription-Key geschützt ist, können MCP-Clients den Schlüssel bei eingehenden Anfragen präsentieren, und das API-Management validiert den Schlüssel. Zum Beispiel kann man in Visual Studio Code einen headers Abschnitt zur MCP-Server-Konfiguration hinzufügen, um den Abonnementschlüssel in Anfrage-Header einzufügen:

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

Hinweis

Verwalten Sie Abonnementschlüssel sicher, indem Sie die Arbeitsbereichseinstellungen von Visual Studio Code oder sichere Eingaben verwenden.

Tokenbasierte Authentifizierung (OAuth 2.1 mit Microsoft Entra ID)

MCP-Clients können OAuth-Token oder JWTs präsentieren, die von Microsoft Entra ID ausgegeben wurden, indem sie einen Authorization Header verwenden und durch API-Management validiert werden.

Verwenden Sie beispielsweise die Richtlinie validate-azure-ad-token, um Microsoft Entra ID-Token zu überprüfen:

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

Weiterleiten von Token an das Back-End

Anfrage-Header werden automatisch (mit bestimmten Ausnahmen) an MCP-Tool-Aufrufe weitergeleitet. Diese Funktion vereinfacht die Integration mit nachgelagerten APIs, die auf Header für Routing, Kontext oder Authentifizierung angewiesen sind.

Wenn Sie den Authorization Header explizit weiterleiten müssen, um eingehende Anfragen zu validieren, verwenden Sie eine der folgenden Ansätze:

  • Definieren Sie Authorization explizit als erforderlichen Header in den API-Einstellungen, und leiten Sie den Header in der Outbound-Richtlinie weiter.

    Beispielrichtlinienausschnitt:

    <!-- Forward Authorization header to backend --> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> 
    </set-header> 
    
  • Verwenden Sie die API Management-Anmeldeinformationsverwaltung und Richtlinien (get-authorization-context, set-header), um das Token auf sichere Weise weiterzuleiten. Weitere Informationen finden Sie unter Sicherer ausgehender Zugang.

Weitere Optionen und Beispiele für die eingehende Autorisierung finden Sie hier:

Schützen des ausgehenden Zugriffs

Verwenden Sie den Credential Manager von API Management, um OAuth 2.0-Token für Backend-API-Anfragen, die MCP-Servertools erstellen, sicher einzuschleusen.

Schritte zur Konfiguration des ausgehenden Zugriffs auf Basis von OAuth 2.0

Schritt 1: Registrieren Sie eine Anwendung im Identitätsanbieter.

Schritt 2: Erstellen Sie einen Anmeldeinformationsanbieter in API Management, der mit dem Identitätsanbieter verknüpft ist.

Schritt 3: Konfigurieren Sie Verbindungen innerhalb der Anmeldeinformationsverwaltung.

Schritt 4: Wenden Sie API Management-Richtlinien an, um Anmeldeinformationen dynamisch abzurufen und anzufügen.

Die folgende Richtlinie ruft beispielsweise ein Zugriffstoken aus der Anmeldeinformationsverwaltung ab und legt es im Authorization-Header der ausgehenden Anforderung fest:

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

Eine schrittweise Anleitung zum Aufrufen eines Beispiel-Back-Ends mithilfe von Anmeldeinformationen, die in der Anmeldeinformationsverwaltung generiert wurden, finden Sie unter Konfigurieren der Anmeldeinformationsverwaltung – GitHub.