Konfigurera inbyggd MCP-serverauktorisering (förhandsversion)

Med App Service-autentisering kan du styra åtkomsten till mcp-servern (Model Context Protocol) genom att kräva att MCP-klienter autentiserar med en identitetsprovider. Du kan göra så att din app uppfyller specifikationen för MCP-serverauktorisering genom att följa anvisningarna i den här artikeln.

Viktigt!

MCP-serverauktorisering definierar åtkomst till servern och ger inte detaljerad kontroll till enskilda MCP-verktyg eller andra konstruktioner.

Konfigurera en identitetsleverantör

Konfigurera App Service-autentisering med en identitetsprovider. Registreringen av identitetsprovidern ska vara unik för MCP-servern. Återanvänd inte en befintlig registrering från en annan programkomponent.

När du skapar registreringen bör du anteckna vilka omfång som definieras i din registrering eller i identitetsproviderns dokumentation.

Konfigurera skyddade resursmetadata (förhandsversion)

MCP-serverauktorisering kräver att servervärden har skyddade resursmetadata (PRM). Stöd för PRM med App Service-autentisering är för närvarande i förhandsversion.

Om du vill konfigurera PRM för MCP-servern ställer du in programinställningen WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES på en kommaavgränsad lista över omfång för ditt program. De omfång du behöver definieras antingen som en del av din appregistrering eller dokumenteras av din identitetsleverantör. Om du till exempel använde Microsoft Entra-ID-providern och lät App Service skapa registreringen åt dig skapades ett standardomfång api://<client-id>/user_impersonation för. Du skulle ställa in WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES på det värdet.

MCP-klientöverväganden

För att kunna logga in användare måste MCP-klienten vara registrerad hos identitetsprovidern. Vissa leverantörer stöder dynamisk klientregistrering (DCR), men många gör det inte, inklusive Microsoft Entra-ID. När DCR inte är tillgängligt måste klienten förkonfigureras med ett klient-ID. Läs dokumentationen för din klient- eller klient-SDK för att förstå hur du anger ett klient-ID.

Om du använder Microsoft Entra-ID kan du ange kända klientprogram och markera dem som förauktoriserade för åtkomst. förauktorisering rekommenderas när det är möjligt. Utan förauktorisering måste användare eller en administratör samtycka till MCP-serverregistreringen och eventuella behörigheter som krävs.

För scenarier med användarmedgivande omfattar utformning av medgivande att MCP-klienten använder interaktiv inloggning för att visa medgivandeprompten. Vissa MCP-klienter kanske inte har någon interaktiv inloggning. Om du till exempel skapar ett MCP-verktyg som ska användas av GitHub Copilot i Visual Studio Code försöker klienten använda kontexten för den inloggade användaren och visar ingen medgivandefråga. I dessa fall krävs förauktorisering av klientprogrammet för att undvika samtyckesproblem.

I utvecklings-/testsyfte kan du skapa användarmedgivande för dig själv genom att logga in på programmet direkt i en webbläsare. När du navigerar till <your-app-url>/.auth/login/aad initieras inloggningsflödet och du uppmanas att ge sitt medgivande om det behövs. Sedan kan du försöka logga in från en annan klient.

MCP-serveröverväganden

App Service-autentisering validerar token som tillhandahålls av MCP-klienter och tillämpar alla konfigurerade auktoriseringsprinciper innan du svarar på MCP-initieringsbegäran. Du kan behöva uppdatera auktoriseringsreglerna för MCP-scenariot. Om du till exempel använde Microsoft Entra-ID-providern och låter App Service skapa registreringen åt dig tillåter en standardprincip endast token som hämtas av själva appen. Du skulle därför lägga till MCP-klienten i listan över tillåtna program i autentiseringskonfigurationen. Mer information finns i Använda en inbyggd auktoriseringsprincip.

MCP-serverramverk abstraherar ofta bort transporten, men i vissa fall kan de exponera den underliggande HTTP-kontexten. När HTTP-kontexten är tillgänglig kan du komma åt användaranspråk och annan autentiseringsinformation som tillhandahålls av App Service-autentisering.

Försiktighet

Den token som används för MCP-serverauktorisering är avsedd att representera åtkomsten till MCP-servern och inte till en underordnad resurs. Direktscenarier där servern vidarebefordrar sin token skapar säkerhetsrisker, så undvik dessa mönster. Om du behöver komma åt en nedströmsresurs hämtar du en ny token via flödets räkning eller någon annan mekanism för explicit delegering.