Udostępnij za pomocą


Bezpieczny dostęp do serwerów MCP w usłudze API Management

DOTYCZY: Deweloper | Podstawowa | Podstawowa wersja 2 | Standardowa | Standardowa wersja 2 | Premium | Premium wersja 2

Dzięki obsłudze serwera MCP w usłudze API Management można uwidocznić i zarządzać dostępem do serwerów MCP i ich narzędzi. W tym artykule opisano sposób zabezpieczania dostępu do serwerów MCP zarządzanych w usłudze API Management, w tym zarówno serwerów MCP udostępnianych z zarządzanych interfejsów API REST, jak i istniejących serwerów MCP hostowanych poza usługą API Management.

Możesz zabezpieczyć dostęp przychodzący do serwera MCP (z klienta MCP do usługi API Management) i dostęp wychodzący (z usługi API Management do serwera MCP).

Bezpieczny dostęp przychodzący

Uwierzytelnianie oparte na kluczach

Jeśli serwer MCP jest chroniony za pomocą klucza subskrypcji usługi API Management przekazanego w nagłówku Ocp-Apim-Subscription-Key , klienci MCP mogą przedstawić klucz w żądaniach przychodzących, a serwer MCP może zweryfikować klucz. Na przykład w programie Visual Studio Code możesz dodać sekcję headers do konfiguracji serwera MCP, aby wymagać klucza subskrypcji w nagłówkach żądania:

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

Uwaga / Notatka

Bezpieczne zarządzanie kluczami subskrypcji przy użyciu ustawień obszaru roboczego programu Visual Studio Code lub bezpiecznych danych wejściowych.

Uwierzytelnianie oparte na tokenach (OAuth 2.1 z identyfikatorem Entra firmy Microsoft)

Klienci MCP mogą prezentować tokeny OAuth lub JWTs wystawione przez identyfikator entra firmy Microsoft przy użyciu nagłówka i weryfikowane przez usługę Authorization API Management.

Na przykład użyj zasad validate-azure-ad-token, aby zweryfikować tokeny identyfikatora Entra firmy Microsoft:

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

Przekazywanie tokenów do zaplecza

Nagłówki żądań są automatycznie przekazywane (z pewnymi wykluczeniami) do wywołań narzędzi MCP, upraszczając integrację z podrzędnymi interfejsami API, które opierają się na nagłówkach na potrzeby routingu, kontekstu lub uwierzytelniania.

Jeśli potrzebujesz jawnego przekazywania nagłówka Authorization w celu zweryfikowania żądań przychodzących, możesz użyć jednej z następujących metod:

  • Jawnie zdefiniuj Authorization jako wymagany nagłówek w ustawieniach interfejsu API i przekaż nagłówek w Outbound zasadach.

    Przykładowy fragment kodu zasad:

    <!-- Forward Authorization header to backend --> 
    <set-header name="Authorization" exists-action="override"> 
        <value>@(context.Request.Headers.GetValueOrDefault("Authorization"))</value> 
    </set-header> 
    
  • Użyj menedżera poświadczeń i zasad usługi API Management (get-authorization-context, set-header), aby bezpiecznie przekazać token. Aby uzyskać szczegółowe informacje, zobacz Zabezpieczanie dostępu wychodzącego .

Aby uzyskać więcej opcji autoryzacji dla ruchu przychodzącego i przykładów, zobacz:

Zabezpieczanie dostępu wychodzącego

Użyj menedżera poświadczeń usługi API Management, aby bezpiecznie wstrzyknąć tokeny OAuth 2.0 dla żądań interfejsu API zaplecza wysyłanych przez narzędzia serwera MCP.

Kroki konfigurowania dostępu wychodzącego opartego na protokole OAuth 2

Krok 1: Zarejestruj aplikację u dostawcy tożsamości.

Krok 2. Utwórz dostawcę poświadczeń w usłudze API Management połączonego z dostawcą tożsamości.

Krok 3: Konfigurowanie połączeń w menedżerze poświadczeń.

Krok 4: Stosowanie zasad usługi API Management w celu dynamicznego pobierania i dołączania poświadczeń.

Na przykład następujące zasady pobiera token dostępu z menedżera poświadczeń i ustawia je w Authorization nagłówku żądania wychodzącego:

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

Aby zapoznać się z przewodnikiem krok po kroku, aby wywołać przykładowe zaplecze przy użyciu poświadczeń wygenerowanych w menedżerze poświadczeń, zobacz Konfigurowanie menedżera poświadczeń — GitHub.