Condividi tramite


Proteggere le chiamate MCP (Model Context Protocol) al Servizio app di Azure da Visual Studio Code con l'autenticazione di Microsoft Entra

Questo articolo illustra come proteggere il server MCP (Model Context Protocol) ospitato nel servizio app di Azure usando l'autenticazione Microsoft Entra. Abilitando l'autenticazione, si garantisce che solo gli utenti autenticati con Microsoft Entra possano accedere al server MCP tramite la modalità agente Copilot in Visual Studio Code.

Per altri metodi di autenticazione e concetti generali relativi alla sicurezza del server MCP, vedere Proteggere un server del protocollo del contesto del modello nel servizio app di Azure.

Prerequisiti

Una App Service che ospita un server MCP. Se è necessario crearne uno, vedere una delle esercitazioni seguenti:

Abilitare l'autenticazione di Microsoft Entra

  1. Nel portale di Azure, vai alla tua app del servizio App Service.

  2. Nel menu a sinistra selezionare Impostazioni>Autenticazione e quindi selezionare Aggiungi provider di identità.

  3. Nella pagina Aggiungi provider di identità selezionare Microsoft come provider di identità.

  4. In Impostazioni di autenticazione del servizio app selezionare un periodo di scadenza per la scadenza del segreto client, ad esempio 6 mesi.

  5. Accettare tutti gli altri valori predefiniti e selezionare Aggiungi per creare il provider di identità.

    Viene creata una nuova registrazione dell'app in Microsoft Entra ID con un segreto client e viene configurata l'app del servizio app in modo che possa essere usata per l'autenticazione.

Autorizzare Visual Studio Code nell'autenticazione del servizio app

Dopo aver abilitato l'autenticazione, è necessario autorizzare Visual Studio Code ad accedere al server MCP.

  1. Nella pagina Autenticazione dell'app di App Service, in Provider di identità selezionare Modifica (icona a forma di matita) accanto al provider Microsoft creato.

  2. Nella pagina Modifica provider di identità in Controlli aggiuntivi>requisiti dell'applicazione client selezionare Consenti richieste da applicazioni client specifiche.

  3. Selezionare il widget della matita per modificare le applicazioni consentite.

  4. Nel campo Applicazioni client consentite aggiungere l'ID client di Visual Studio Code: aebc6443-996d-45c2-90f0-388ff96faa56.

  5. Selezionare OK e quindi Salva.

Autorizzare Visual Studio Code nella registrazione dell'app

Successivamente, è necessario configurare la registrazione dell'app per esporre l'API a Visual Studio Code.

  1. Tornare alla pagina Autenticazione dell'app del Servizio App.

  2. Selezionare il provider Microsoft nella colonna Provider di identità per aprire la pagina di registrazione dell'app.

  3. Nella pagina di registrazione dell'app selezionare Gestisci>Esporre un'API dal menu a sinistra.

  4. In Applicazioni client autorizzate selezionare Aggiungi applicazione client.

  5. Nel campo ID client immettere l'ID client di Visual Studio Code: aebc6443-996d-45c2-90f0-388ff96faa56.

  6. Selezionare la casella di controllo accanto all'ambito user_impersonation per autorizzare questo ambito.

  7. Seleziona Aggiungi applicazione.

  8. In Ambiti definiti da questa API trovare e copiare il valore dell'ambito completo. L'aspetto dovrebbe essere simile a api://<app-registration-app-id>/user_impersonation.

    Questo valore di ambito è necessario nella sezione successiva.

Abilitare i metadati delle risorse protette impostando l'ambito di autorizzazione

Per abilitare l'autorizzazione del server MCP, è necessario configurare i metadati delle risorse protette impostando l'ambito di autorizzazione in un'impostazione dell'app. Ciò consente ai client MCP di individuare i requisiti di autenticazione tramite l'endpoint /.well-known/oauth-protected-resource .

  1. Nel portale di Azure torna alla pagina dell'app di App Service.

  2. Nel menu a sinistra selezionare Impostazioni Variabili>di ambiente.

  3. Selezionare Aggiungi per creare una nuova impostazione dell'applicazione.

  4. Per Nome inserisci WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES.

  5. Per Valore, incollare l'ambito copiato dalla registrazione dell'app: api://<app-registration-app-id>/user_impersonation.

  6. Selezionare Applica, quindi selezionare di nuovo Applica per confermare e riavviare l'app.

    Questa impostazione configura il PRM per includere l'ambito richiesto per l'autorizzazione del server MCP.

Connettersi da Visual Studio Code

È ora possibile connettersi al server MCP protetto da Visual Studio Code.

  1. Aprire Visual Studio Code nel computer locale.

  2. Aprire o creare un file di configurazione MCP (mcp.json). Per una configurazione MCP con ambito area di lavoro, crearla nella directory vscode dell'area di lavoro.

  3. Aggiungere la configurazione del server MCP:

    {
      "servers": {
        "my-app-service-mcp": {
          "type": "http",
          "url": "https://<your-app-url>.azurewebsites.net/api/mcp"
        }
      }
    }
    

    Sostituire <your-app-url> con l'URL effettivo per l'applicazione del servizio App Service. È possibile trovare il dominio predefinito dell'app nella pagina Panoramica del portale di Azure. In questo esempio il percorso è /api/mcp, ma il percorso effettivo dipende dal codice MCP.

  4. In Visual Studio Code aprire il riquadro comandi (Ctrl+Shift+P o Cmd+Shift+P in macOS).

  5. Digitare MCP: List Servers e premere Invio.

  6. Selezionare il server MCP dall'elenco e scegliere Avvia server.

  7. Visual Studio Code richiede automaticamente di accedere con Microsoft Entra ID. Seguire le istruzioni di autenticazione.

    L'estensione MCP gestisce il flusso OAuth usando l'ambito configurato e Visual Studio Code ottiene il token di accesso necessario per chiamare il server MCP.

    Suggerimento

    Se viene visualizzato un prompt di autenticazione imprevisto o si verificano errori, vedere Risoluzione dei problemi.

  8. Dopo l'autenticazione, il server MCP è connesso e pronto per l'uso in modalità agente Di Chat di GitHub Copilot o in altri client MCP.

Testare la connessione

Per verificare che il server MCP sia protetto e accessibile correttamente:

  1. Aprire GitHub Copilot Chat in Visual Studio Code (Ctrl+Alt+I o Cmd+Option+I in macOS).

  2. Provare a usare una funzionalità dal server MCP. Ad esempio, se si usa l'esempio Todos:

    Show me all my tasks
    
  3. GitHub Copilot dovrebbe chiamare correttamente il server MCP e verranno visualizzati i risultati nella chat. Se si verificano problemi, vedere Risoluzione dei problemi.

Risoluzione dei problemi

Quando si avvia il server MCP in Visual Studio Code, il prompt di autenticazione visualizzato indica se la configurazione è corretta:

  • Configurazione corretta: Visual Studio Code richiede l'autenticazione con Microsoft. Ciò significa che i metadati delle risorse protette (PRM) sono configurati correttamente e Visual Studio Code ha individuato correttamente il server di autorizzazione e l'ambito dall'endpoint /.well-known/oauth-protected-resource .

  • Configurazione non corretta: Visual Studio Code richiede di eseguire l'autenticazione con un /authorize endpoint nell'app del servizio app (ad esempio, https://<your-app-url>.azurewebsites.net/authorize). Ciò significa che il PRM non è configurato correttamente. Visual Studio Code non riesce a trovare il server di autorizzazione e l'ambito di autorizzazione, quindi esegue il fallback all'uso dell'URL dell'app come endpoint di autorizzazione, che non esiste.

Se viene visualizzato il prompt di autenticazione non corretto, verificare che:

  • L'impostazione WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES dell'app è configurata correttamente con il valore di ambito completo api://<app-registration-app-id>/user_impersonation.
  • L'app del servizio app è stata completamente riavviata dopo l'aggiunta dell'impostazione dell'app. Il riavvio potrebbe richiedere alcuni minuti.

Se vengono visualizzati errori di autenticazione dopo l'accesso, verificare che:

  • L'ID client di Visual Studio Code (aebc6443-996d-45c2-90f0-388ff96faa56) viene aggiunto sia alla configurazione di autenticazione del servizio app (applicazioni client consentite) che alla registrazione dell'app (applicazioni client autorizzate in Esporre un'API).
  • Il valore di ambito nell'impostazione dell'app corrisponde esattamente a quanto definito nella registrazione dell'app.