Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
GÄLLER FÖR: Utvecklare | Grundläggande | Basic v2 | Standard | Standard v2 | Premium | Premium v2
Genom att använda MCP-serverstöd i API-hantering kan du exponera och styra åtkomst till MCP-servrar och deras verktyg. Den här artikeln beskriver hur du skyddar åtkomsten till MCP-servrar som hanteras i API Management, inklusive både MCP-servrar som exponeras från hanterade REST-API:er och befintliga MCP-servrar som finns utanför API Management.
Du kan skydda antingen eller båda inkommande åtkomsten till MCP-servern (från en MCP-klient till API Management) och utgående åtkomst (från API Management till MCP-servern).
Säker inkommande åtkomst
Nyckelbaserad autentisering
Om MCP-servern är skyddad med en API-hanteringsprenumerationsnyckel som skickas i Ocp-Apim-Subscription-Key headern, kan MCP-klienter visa nyckeln i inkommande förfrågningar, och API Management validerar nyckeln. Till exempel kan du i Visual Studio Code lägga till en headers sektion i MCP-serverkonfigurationen för att inkludera prenumerationsnyckeln i begäransökor:
{
"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>"
}
}
Anmärkning
Hantera prenumerationsnycklar säkert genom att använda Visual Studio Code-arbetsytinställningar eller säkra inmatningar.
Tokenbaserad autentisering (OAuth 2.1 med Microsoft Entra-ID)
MCP-klienter kan presentera OAuth-tokens eller JWT:er utfärdade av Microsoft Entra ID genom att använda en Authorization header och valideras av API Management.
Använd till exempel policyn validate-azure-ad-token för att verifiera Microsoft Entra ID-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>
Vidarebefordra token till serverdelen
Förfrågningshuvuden vidarebefordras automatiskt (med vissa undantag) till MCP-verktygsinkallelser. Denna funktion förenklar integrationen med nedströms API:er som förlitar sig på headers för routing, kontext eller autentisering.
Om du behöver vidarebefordra Authorization headern uttryckligen för att validera inkommande förfrågningar, använd en av följande metoder:
Definiera
Authorizationuttryckligen som en obligatorisk rubrik i API-inställningarna och vidarebefordra rubriken i principenOutbound.Exempel på principfragment:
<!-- Forward Authorization header to backend --> <set-header name="Authorization" exists-action="override"> <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> </set-header>Använd API Managements autentiseringshanterare och principer (
get-authorization-context,set-header) för att vidarebefordra token på ett säkert sätt. För att lära dig mer, se Säker utgående åtkomst.
Mer alternativ och exempel för inkommande auktorisering finns i:
MCP-serverauktorisering med PRM-exempel (Protected Resource Metadata)
Skydda fjärr-MCP-servrar med Hjälp av Azure API Management (experimentell)
Skydda utgående åtkomst
Använd API Managements credential manager för att säkert injicera OAuth 2.0-tokens för backend-API-förfrågningar som MCP-serververktyg gör.
Steg för att konfigurera OAuth 2.0-baserad utgående åtkomst
Steg 1: Registrera ett program i identitetsprovidern.
Steg 2: Skapa en autentiseringsprovider i API Management som är länkad till identitetsprovidern.
Steg 3: Konfigurera anslutningar i autentiseringshanteraren.
Steg 4: Använd API Management-principer för att dynamiskt hämta och bifoga autentiseringsuppgifter.
Följande princip hämtar till exempel en åtkomsttoken från autentiseringshanteraren och anger den Authorization i rubriken för den utgående begäran:
<!-- 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>
En stegvis guide för att anropa en exempelserverdel med autentiseringsuppgifter som genereras i autentiseringshanteraren finns i Konfigurera autentiseringshanteraren – GitHub.