適用於: 員工租戶
外部租戶(深入了解)
在本文中,您將學習如何使用 Azure Functions 應用程式建立一個反向代理,以便在測試環境中管理單頁應用程式(SPA)中使用 原生驗證 API的 CORS 標頭。
原生驗證 API 不支援跨原始來源資源分享 (CORS)。 因此,使用此 API 進行使用者驗證的單頁應用程式無法從前端 JavaScript 程式代碼提出成功的要求。 若要解決此問題,您必須在 SPA 與原生驗證 API 之間新增 Proxy 伺服器。 此 Proxy 伺服器會將適當的 CORS 標頭插入回應中。
此解決方案僅供測試之用,且 不應用於生產環境。 如果您要尋找在生產環境中使用的解決方案,建議您使用 Azure Front Door 解決方案,請參閱 使用 Azure Front Door 作為反向代理來管理生產環境下的 SPA 的 CORS 標頭的指示。
先決條件
- Azure 訂用帳戶。 免費建立帳戶。
- 註冊
Microsoft.App
資源提供者,請參閱 如何註冊資源提供者。 您只需要針對每個新建立的訂用帳戶完成此步驟一次。 - 安裝 Azure 開發人員 CLI (azd)。
- 您可以透過網址存取的範例 SPA,例如
http://www.contoso.com
:- 您可以使用 快速入門中所述的 React 應用程式:使用原生驗證 API登入範例 React SPA。 不過,請勿設定或運行代理伺服器,因為本指南涵蓋了代理伺服器的設定過程。
- 執行應用程式之後,請記錄應用程式 URL 以供稍後在本指南中使用。
使用 Azure 開發人員命令列介面(azd)範本在 Azure 函式應用程式中建立反向代理
若要初始化 azd 範本,請執行下列命令:
azd init --template https://github.com/azure-samples/ms-identity-extid-cors-proxy-function
出現提示時,請輸入 azd 環境的名稱。 此名稱會作為資源群組的前置詞,因此應該在您的 Azure 訂用帳戶中是唯一的。
若要登入 Azure,請執行下列命令:
azd auth login
若要建置、布建及部署應用程式資源,請執行下列命令:
azd up
出現提示時,請輸入下列資訊以完成資源建立:
-
Azure Location
:部署資源的 Azure 位置。 -
Azure Subscription
:部署資源的 Azure 訂用帳戶。 -
corsAllowedOrigin
:允許 CORS 要求的來源網域,格式為 SCHEME://DOMAIN:PORT,例如 http://localhost:3000。 -
tenantSubdomain
:我們正在代理處理的外部租戶子域。 例如,如果您的租戶主要網域為contoso.onmicrosoft.com
,請使用contoso
。 如果您沒有租戶子域,請瞭解如何 閱讀租戶詳細資料。
-
使用反向 Proxy 測試範例 SPA
在您的範例 SPA 中,開啟 API\React\ReactAuthSimple\src\config.ts 檔案,然後取代:
-
BASE_API_URL
、http://localhost:3001/api的值,配合https://Enter_App_Function_Name_Here.azurewebsites.net
。 - 將佔位元
Enter_App_Function_Name_Here
替換為您的函式應用程式名稱。 如有必要,請重新執行範例 SPA。
-
流覽至範例 SPA URL,然後測試註冊、登入和密碼重設流程。 您的 SPA 應用程式應該正常運作,因為反向 Proxy 會正確管理 CORS 標頭。