Delen via


Beveiligde toegang tot MCP-servers in API Management

VAN TOEPASSING OP: Basic | Basic v2 | Standaard | Standard v2 | Premium | Premium v2

Met ondersteuning voor MCP-servers in API Management kunt u toegang tot MCP-servers en hun hulpprogramma's beschikbaar maken en beheren. In dit artikel wordt beschreven hoe u de toegang tot MCP-servers beveiligt die worden beheerd in API Management, inclusief zowel MCP-servers die worden weergegeven vanuit beheerde REST API's als bestaande MCP-servers die buiten API Management worden gehost.

U kunt zowel binnenkomende toegang tot de MCP-server (van een MCP-client naar API Management) als uitgaande toegang (van API Management naar de MCP-server) beveiligen.

Binnenkomende toegang beveiligen

Verificatie op basis van sleutels

Als de MCP-server is beveiligd met een API Management-abonnementssleutel die is doorgegeven in een Ocp-Apim-Subscription-Key header, kunnen MCP-clients de sleutel presenteren in de binnenkomende aanvragen en kan de MCP-server de sleutel valideren. In Visual Studio Code kunt u bijvoorbeeld een headers sectie toevoegen aan de MCP-serverconfiguratie om de abonnementssleutel in de aanvraagheaders te vereisen:

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

Opmerking

Beheer abonnementssleutels veilig met behulp van werkruimte-instellingen van Visual Studio Code of beveiligde invoer.

Verificatie op basis van tokens (OAuth 2.1 met Microsoft Entra-id)

MCP-clients kunnen OAuth-tokens of JWT's presenteren die zijn uitgegeven door Microsoft Entra-id met behulp van een Authorization header en gevalideerd door API Management.

Gebruik bijvoorbeeld het beleid validate-azure-ad-token om Microsoft Entra ID-tokens te valideren:

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

Tokens doorsturen naar back-end

Standaard worden in API Management binnenkomende headers, zoals Authorization een BACK-end van de MCP-server, niet automatisch doorgestuurd. Als u tokens vandaag veilig wilt doorsturen, hebt u momenteel de volgende opties:

  • Definieer expliciet Authorization als een vereiste header in de API-instellingen en stuur de header in het Outbound beleid door.

    Voorbeeld van beleidsfragment:

    <!-- Forward Authorization header to backend --> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> 
    </set-header> 
    
  • Gebruik API Management-referentiebeheer en -beleid (get-authorization-context, set-header) om het token veilig door te sturen. Zie Uitgaande toegang beveiligen voor meer informatie.

Zie voor meer opties en voorbeelden voor binnenkomende autorisatie:

Uitgaande toegang beveiligen

Gebruik referentiebeheer van API Management om OAuth 2.0-tokens veilig te injecteren voor back-end-API-aanvragen die zijn gedaan door MCP-serverhulpprogramma's.

Stappen voor het configureren van uitgaande toegang op basis van OAuth 2

Stap 1: Registreer een toepassing in de id-provider.

Stap 2: Maak een referentieprovider in API Management die is gekoppeld aan de id-provider.

Stap 3: Configureer verbindingen in referentiebeheer.

Stap 4: Pas API Management-beleid toe om referenties dynamisch op te halen en te koppelen.

Met het volgende beleid wordt bijvoorbeeld een toegangstoken opgehaald uit de referentiebeheerder en ingesteld in de Authorization header van de uitgaande aanvraag:

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

Zie Referentiebeheer configureren - GitHub voor een stapsgewijze handleiding voor het aanroepen van een voorbeeldback-end met behulp van referenties die zijn gegenereerd in referentiebeheer.