Freigeben über


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

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

Mit MCP-Serverunterstützung in API Management können Sie den Zugriff auf MCP-Server und deren Tools verfügbar machen 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 geschützt wird, der in einem Ocp-Apim-Subscription-Key-Header übergeben wird, können MCP-Clients den Schlüssel in den eingehenden Anforderungen angeben, und der MCP-Server kann den Schlüssel überprüfen. In Visual Studio Code können Sie beispielsweise der MCP-Serverkonfiguration den Abschnitt headers hinzufügen, um den Abonnementschlüssel in den Anforderungsheadern anzufordern:

{
  "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 mithilfe von Visual Studio Code-Arbeitsbereichseinstellungen oder sicheren Eingaben.

Tokenbasierte Authentifizierung (OAuth 2.1 mit Microsoft Entra ID)

MCP-Clients können OAuth-Token oder JWTs präsentieren, die von Microsoft Entra ID mithilfe eines Authorization-Headers ausgestellt und von API Management überprüft 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

Anforderungsheader werden automatisch (mit bestimmten Ausschlüssen) an MCP-Toolaufrufe weitergeleitet und vereinfachen die Integration mit downstream-APIs, die auf Headern für Routing, Kontext oder Authentifizierung angewiesen sind.

Wenn Sie eine explizite Weiterleitung des Authorization Headers zum Überprüfen eingehender Anforderungen erfordern, können Sie einen der folgenden Ansätze verwenden:

  • 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. Details finden Sie unter Schützen des ausgehenden Zugriffs.

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

Schützen des ausgehenden Zugriffs

Verwenden Sie die Anmeldeinformationsverwaltung von API Management, um OAuth 2.0-Token für die von MCP-Servertools gesendeten Back-End-API-Anforderungen sicher einzufügen.

Schritte zum Konfigurieren des OAuth 2-basierten ausgehenden Zugriffs

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.