本文將教你如何利用 Microsoft Entra 認證,保護你在 Azure App Service 上託管的模型情境協定(MCP)伺服器。 啟用認證後,只有使用 Microsoft Entra 認證的使用者才能透過 Visual Studio Code 中的 Copilot agent 模式存取你的 MCP 伺服器。
關於其他認證方法及一般 MCP 伺服器安全概念,請參見 Azure App Service 中的「保護模型情境協定伺服器」。
先決條件
一個承載 MCP 伺服器的 App Service 應用程式。 如果你需要建立一個,請參考以下教學:
- 將 App Service 應用程式整合為適用於 GitHub Copilot Chat 的 MCP 伺服器 (.NET)
- 將 App Service 應用程式整合為適用於 GitHub Copilot Chat 的 MCP 伺服器 (Java)
- 將 App Service 應用程式整合為適用於 GitHub Copilot Chat 的 MCP 伺服器 (Python)
- 將 App Service 應用程式整合為適用於 GitHub Copilot Chat 的 MCP 伺服器 (Node.js)
啟用 Microsoft Entra 驗證
在 Azure 入口網站,導覽到你的 App Service 應用程式。
在左側選單中,選擇 「設定>驗證」,然後選擇 「新增身份提供者」。
在 「新增身份提供者 」頁面,選擇 Microsoft 作為 身份提供者。
在 App Service 認證設定中,針對 用戶端秘密到期,選擇一個有效期限(例如 6 個月)。
接受所有其他預設值,並選擇 新增 以建立身份提供者。
這會在 Microsoft Entra ID 中建立一個新的應用程式註冊,並設定用戶端密碼,配置你的 App Service 應用程式使用該密碼進行驗證。
以 App Service 驗證來授權 Visual Studio Code
啟用驗證後,你需要授權 Visual Studio Code 才能存取你的 MCP 伺服器。
在你的 App Service 應用程式的 認證 頁面中,在 身分識別提供者部分,選擇你所建立的 Microsoft 提供者旁的 編輯(鉛筆圖示)。
在 編輯身份提供者 頁面,在 「額外檢查>客戶端應用程式需求」中,選擇 允許特定客戶端應用程式的請求。
選擇鉛筆小工具來編輯允許的應用程式。
在 「允許的用戶端應用程式 」欄位中,加入 Visual Studio Code 用戶端 ID:
aebc6443-996d-45c2-90f0-388ff96faa56。選擇 確定,然後選擇 儲存。
以應用程式註冊來授權 Visual Studio Code
接著,你需要設定應用程式註冊,讓你的 API 暴露給 Visual Studio Code。
回到你 App Service 應用程式的 認證 頁面。
在 身份提供者 欄位中選擇 Microsoft 提供者以開啟應用程式註冊頁面。
在應用程式註冊頁面,從左側選單選擇 「管理>公開 API 」。
在 [授權的用戶端應用程式] 底下,選取 [新增用戶端應用程式]。
在 Client ID 欄位中,輸入 Visual Studio Code 的客戶端 ID:
aebc6443-996d-45c2-90f0-388ff96faa56。選擇 user_impersonation 範圍旁的勾選框以授權此範圍。
選取新增應用程式。
在 此 API 定義的範圍中,找到並複製完整的範圍值。 應顯示為
api://<app-registration-app-id>/user_impersonation。你需要這個範圍值在下一節。
透過設定授權範圍來啟用受保護的資源元資料
要啟用 MCP 伺服器授權,你需要在應用程式設定中設定授權範圍來設定受保護的資源元資料(PRM)。 這讓 MCP 用戶端能透過端點發現認證需求 /.well-known/oauth-protected-resource 。
在 Azure 入口網站,回到你的 App Service 應用程式頁面。
在左側選單中,選擇 設定>環境變數。
選擇 新增 以建立新的應用程式設定。
對於名稱,輸入
WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES。對於 價值,請貼上你從應用程式註冊複製的範圍:
api://<app-registration-app-id>/user_impersonation。選擇 「套用」,再選擇 「重新申請 」以確認並重新啟動應用程式。
此設定會將 PRM 配置為包含 MCP 伺服器授權所需的範圍。
從 Visual Studio Code 連接
現在你可以從 Visual Studio Code 連接到你安全的 MCP 伺服器。
在你本機上開啟 Visual Studio Code。
開啟或建立 MCP 設定檔(
mcp.json)。 對於工作區範圍的 MCP 設定,請在工作區的 .vscode 目錄中建立。新增你的 MCP 伺服器配置:
{ "servers": { "my-app-service-mcp": { "type": "http", "url": "https://<your-app-url>.azurewebsites.net/api/mcp" } } }用你實際的 App Service 應用程式網址替換
<your-app-url>。 你可以在 Azure 入口網站的 概覽 頁面找到你應用程式的預設網域。 在這個例子中,路徑是/api/mcp,但實際路徑取決於你的 MCP 程式碼。在 Visual Studio Code 中,開啟指令面板(
Ctrl+Shift+P或Cmd+Shift+P在 macOS 上)。輸入 MCP:列出伺服器 並按 Enter 鍵。
從列表中選擇你的 MCP 伺服器,並選擇 開始伺服器。
Visual Studio Code 會自動提示你使用 Microsoft Entra ID 登入。 請依照認證提示操作。
MCP 擴充功能會根據你設定的範圍處理 OAuth 流程,Visual Studio Code 則取得必要的存取權杖來呼叫你的 MCP 伺服器。
小提示
如果你看到意外的認證提示或遇到錯誤,請參見 故障排除。
一旦認證完成,你的 MCP 伺服器即連接並準備在 GitHub Copilot Chat 代理模式或其他 MCP 用戶端中使用。
測試連線
為了確認你的 MCP 伺服器是否安全且可存取:
於 Visual Studio Code 開啟 GitHub Copilot Chat (
Ctrl+Alt+I,若是 macOS 則為Cmd+Option+I)。試著使用你 MCP 伺服器上的一個功能。 舉例來說,如果你使用 Todos 範例:
Show me all my tasksGitHub Copilot 應該能成功呼叫你的 MCP 伺服器,你應該會在聊天中看到結果。 如果你遇到任何問題,請參考 故障排除。
故障排除
當你在 Visual Studio Code 啟動 MCP 伺服器時,你會看到的認證提示顯示你的設定是否正確:
正確設定:Visual Studio Code 會提示你 向 Microsoft 進行認證。 這表示受保護的資源元資料(PRM)已正確設定,且 Visual Studio Code 成功從
/.well-known/oauth-protected-resource端點發現授權伺服器與範圍。設定錯誤:Visual Studio Code 會提示你用 App Service 應用程式中的端
/authorize點進行認證(例如https://<your-app-url>.azurewebsites.net/authorize)。 這表示PRM設定不正確。 Visual Studio Code 找不到授權伺服器和授權範圍,所以它會退回到用你應用程式的 URL 作為授權端點,但這個端點並不存在。
如果你看到錯誤的驗證提示,請確認:
- 你的應用程式設定
WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES已正確設定,且全範圍值api://<app-registration-app-id>/user_impersonation為 。 - 在新增應用程式設定後,App Service 應用程式已經完全重新啟動。 完成重啟可能需要幾分鐘。
如果登入後發現驗證錯誤,請確認:
- Visual Studio Code 用戶端識別碼 (
aebc6443-996d-45c2-90f0-388ff96faa56) 會新增至 App Service 認證設定 (獲得允許的用戶端應用程式) 以及應用程式註冊 (公開 API 中獲得授權的用戶端應用程式)。 - 應用程式設定中的範圍值完全符合你應用程式註冊中定義的。