Not
Å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
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.