App Service 驗證 可讓您要求 MCP 用戶端向身分識別提供者進行驗證,以控制對模型內容通訊協定 (MCP) 伺服器的存取。 您可以按照本文中的指示,讓應用程式符合 MCP 伺服器授權規格 。
這很重要
MCP 伺服器授權定義了對伺服器的訪問,並且不會對單個 MCP 工具或其他結構提供精細控制。
設定識別提供者
使用身分識別提供者設定 App Service 驗證。 MCP 伺服器的身分識別提供者註冊應該是唯一的。 請勿重複使用來自另一個應用程式元件的現有註冊。
建立註冊時,請記下註冊或身分識別提供者文件中定義的範圍。
設定受保護的資源中繼資料 (預覽版)
MCP 伺服器授權需要伺服器主機具備受保護的資源中繼資料 (PRM)。 具有 App Service 驗證的 PRM 支援目前處於預覽階段。
若要為您的 MCP 伺服器設定 PRM,請將 WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES 應用程式設定設為以逗號分隔的應用程式範圍清單。 您需要的範圍會定義為應用程式註冊的一部分,或由身分識別提供者記錄。 例如,如果您使用 Microsoft Entra ID 提供者,並讓 App Service 為您建立註冊,則會建立一個預設的 api://<client-id>/user_impersonation 範圍。 您將設定 WEBSITE_AUTH_PRM_DEFAULT_WITH_SCOPES 為該值。
MCP 用戶端考量事項
若要登入使用者,必須向身分識別提供者註冊 MCP 用戶端。 某些提供者支援動態用戶端註冊 (DCR),但許多提供者不支援,包括 Microsoft Entra ID。 當 DCR 無法使用時,用戶端必須預先設定用戶端識別碼。 請參閱用戶端或用戶端SDK的文件,以瞭解如何提供使用者端ID。
Entra ID 同意撰寫
如果您使用 Microsoft Entra ID,您可以指定已知的用戶端應用程式,並將其標示為預先授權的存取。 建議盡可能進行預先授權。 如果沒有預先授權,使用者或管理員需要 同意 MCP 伺服器註冊 及其所需的任何權限。
針對使用者同意案例,同意撰寫涉及 MCP 用戶端使用互動式登入來顯示同意提示。 某些 MCP 用戶端可能不會顯示互動式登入。 例如,如果您要建置 MCP 工具,供 Visual Studio Code 中的 GitHub Copilot 使用,用戶端會嘗試使用登入使用者的內容,而且不會顯示同意提示。 在這些情況下,需要預先授權用戶端應用程式以避免同意問題。
基於開發/測試目的,您可以直接在瀏覽器中登入應用程式,為自己撰寫使用者同意。 導覽至 <your-app-url>/.auth/login/aad 會起始登入流程,並在需要時提示您同意。 然後,您可以嘗試從另一個用戶端登入。
MCP 伺服器考量
App Service 驗證會驗證 MCP 用戶端所提供的權杖,並在回應 MCP 初始化要求之前套用任何已設定的授權原則。 您可能需要更新 MCP 案例的授權規則。 例如,如果您使用 Microsoft Entra ID 提供者,並讓 App Service 為您建立註冊,則預設原則僅允許由應用程式自行取得的權杖。 因此,您會將 MCP 用戶端新增至驗證組態中的允許應用程式清單。 如需詳細資訊,請參閱 使用內建授權原則。
MCP 伺服器架構經常抽象化傳輸,但在某些情況下,它們可能會公開基礎 HTTP 內容。 當 HTTP 內容可用時,您可以存取 App Service 驗證所提供的 使用者宣告和其他驗證資訊 。
謹慎
用於 MCP 伺服器授權的權杖代表對 MCP 伺服器的存取權,而不是對下游資源的存取權。 伺服器轉送其權杖的直接傳遞案例會產生安全性弱點,因此請避免使用這些模式。 如果您需要存取下游資源內容,請透過代理者流程或其他明確委派機制來取得新的權杖。