Not
Åtkomst till denna sida kräver auktorisation. Du kan prova att logga in eller byta katalog.
Åtkomst till denna sida kräver auktorisation. Du kan prova att byta katalog.
GÄLLER FÖR: Utvecklare | Grundläggande | Basic v2 | Standard | Standard v2 | Premium | Premium v2
Med stöd för MCP-server i API Management kan du exponera och styra åtkomsten 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 skyddas med en API Management-prenumerationsnyckel som skickas i ett Ocp-Apim-Subscription-Key huvud kan MCP-klienter presentera nyckeln i inkommande begäranden och MCP-servern kan verifiera nyckeln. I Visual Studio Code kan du till exempel lägga till ett headers avsnitt i MCP-serverkonfigurationen för att kräva prenumerationsnyckeln i begäranderubrikerna:
{
"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 på ett säkert sätt med hjälp av Visual Studio Code-arbetsyteinställningar eller säkra indata.
Tokenbaserad autentisering (OAuth 2.1 med Microsoft Entra-ID)
MCP-klienter kan presentera OAuth-token eller JWT:er som utfärdats av Microsoft Entra ID med hjälp av ett Authorization huvud och verifierats 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
Begärandehuvuden vidarebefordras automatiskt (med vissa undantag) till MCP-verktygsanrop, vilket förenklar integreringen med underordnade API:er som förlitar sig på rubriker för routning, kontext eller autentisering.
Om du kräver explicit vidarebefordran av Authorization-huvudet för att verifiera inkommande begäranden, kan du använda något av följande sätt:
AuthorizationDefiniera uttryckligen som ett obligatoriskt huvud i API-inställningarna och vidarebefordra huvudet iOutboundprincipen.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. Mer information finns i Skydda 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 autentiseringshanterare för att på ett säkert sätt mata in OAuth 2.0-token för serverdels-API-begäranden som görs av MCP-serververktyg.
Steg för att konfigurera OAuth 2-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.