快速入門:將 RESTful API 應用程式部署至 Azure Spring Apps
注意
基本、標準和企業方案將從 2025 年 3 月中旬開始淘汰,並停用 3 年。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 Azure Spring Apps 淘汰公告。
標準 耗用量和專用 方案將從 2024 年 9 月 30 日起淘汰,並在六個月後完成關閉。 建議您轉換至 Azure Container Apps。 如需詳細資訊,請參閱 將 Azure Spring Apps 標準取用和專用方案遷移至 Azure Container Apps。
本文說明如何將受 Microsoft Entra ID 保護的 RESTful API 應用程式部署至 Azure Spring Apps。 範例專案是以 Simple Todo Web 應用程式為基礎的簡化版本,它只提供後端服務,並使用 Microsoft Entra 標識符來保護 RESTful API。
這些 RESTful API 受到套用角色型存取控制 (RBAC) 的保護。 匿名使用者無法存取任何數據,且不允許控制不同使用者的存取權。 匿名使用者只有下列三個許可權:
- 讀取:使用此許可權,用戶可以讀取ToDo資料。
- 寫入:使用此許可權,使用者可以新增或更新ToDo數據。
- 刪除:使用此許可權,用戶可以刪除 ToDo 資料。
部署成功之後,您可以透過 Swagger UI 檢視及測試 API。
下圖顯示系統的架構:
本文說明建立資源並將其部署至 Azure Spring Apps 的下列選項:
- Azure 入口網站 + Maven 外掛程式選項提供更傳統的方法來建立資源和逐步部署應用程式。 此選項適用於第一次使用 Azure 雲端服務的 Spring 開發人員。
- Azure 開發人員 CLI 選項是一種更有效率的方式,可透過簡單的命令自動建立資源及部署應用程式。 Azure 開發人員 CLI 會使用範本來布建所需的 Azure 資源,以及部署應用程式程式代碼。 此選項適用於熟悉 Azure 雲端服務的 Spring 開發人員。
本文說明建立資源並將其部署至 Azure Spring Apps 的下列選項:
- Azure 入口網站 + Maven 外掛程式選項提供更傳統的方法來建立資源和逐步部署應用程式。 此選項適用於第一次使用 Azure 雲端服務的 Spring 開發人員。
- Azure CLI 選項會使用功能強大的命令行工具來管理 Azure 資源。 此選項適用於熟悉 Azure 雲端服務的 Spring 開發人員。
1.Prerequisites
Azure 訂用帳戶。 如果您沒有 Azure 訂用帳戶,請在開始之前建立 Azure 免費帳戶 。
下列角色之一:
- 全域管理員或特殊權限角色管理員,用於為要求任何 API 任何權限的應用程式授與同意。
- 「雲端應用程式管理員」或「應用程式管理員」,用於為要求任何 API 的任何權限的應用程式授與同意,但 Microsoft Graph 應用程式角色 (應用程式權限) 除外。
- 自訂目錄角色,其包含的權限可針對應用程式所需的權限授與應用程式權限。
如需詳細資訊,請參閱對應用程式授與全租用戶的管理員同意。
如果您是第一次在目標訂用帳戶中部署 Azure Spring 應用程式企業方案執行個體,請參閱 Azure Marketplace 的企業方案中的需求一節。
Git。
Java Development Kit (JDK)第 17 版。
Microsoft Entra 租用戶。 如需建立帳戶的指示,請參閱 快速入門:在 Microsoft Entra 識別碼中建立新的租使用者。
Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始之前建立 Azure 免費帳戶 。
下列角色之一:
- 全域管理員或特殊權限角色管理員,用於為要求任何 API 任何權限的應用程式授與同意。
- 「雲端應用程式管理員」或「應用程式管理員」,用於為要求任何 API 的任何權限的應用程式授與同意,但 Microsoft Graph 應用程式角色 (應用程式權限) 除外。
- 自訂目錄角色,其包含的權限可針對應用程式所需的權限授與應用程式權限。
如需詳細資訊,請參閱對應用程式授與全租用戶的管理員同意。
Git。
Java Development Kit (JDK)第 17 版。
Microsoft Entra 租用戶。 如需建立帳戶的指示,請參閱 快速入門:在 Microsoft Entra 識別碼中建立新的租使用者。
2. 準備 Spring 專案
若要部署 RESTful API 應用程式,第一個步驟是準備 Spring 專案以在本機執行。
使用下列步驟在本機複製並執行應用程式:
使用下列命令從 GitHub 複製範例專案:
git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
如果您想要在本機執行應用程式,請先完成公開 RESTful API 和更新應用程式組態小節中的步驟,然後使用下列命令搭配 Maven 執行範例應用程式:
cd ASA-Samples-Restful-Application ./mvnw spring-boot:run
3.準備雲端環境
執行此範例應用程式所需的主要資源是 Azure Spring Apps 實例和 適用於 PostgreSQL 的 Azure 資料庫 實例。 下列各節說明如何建立這些資源。
3.1. 登入 Azure 入口網站
移至 Azure 入口網站,然後輸入您的認證以登入入口網站。 預設檢視是您的服務儀表板。
3.2. 建立 Azure Spring Apps 執行個體
使用下列步驟來建立 Azure Spring Apps 服務實例:
選取 Azure 入口網站 角落的 [建立資源]。
選取 [計算>Azure Spring Apps]。
在 [基本資料] 表單中填寫下列資訊:
設定 建議的值 描述 訂用帳戶 您的訂閱名稱。 您要用於伺服器的 Azure 訂用帳戶。 如果您有多個訂用帳戶,請選擇您想要針對資源計費的訂用帳戶。 資源群組 myresourcegroup 新的資源群組名稱,或您訂用帳戶中現有的資源群組名稱。 名稱 myasa 識別 Azure Spring Apps 服務的唯一名稱。 名稱長度必須為 4 到 32 個字元,且只能包含小寫字母、數字及連字號。 服務名稱的第一個字元必須是字母,且最後一個字元必須是字母或數字。 計劃 企業 決定與實例相關聯的資源和成本的定價方案。 區域 最接近用戶的區域。 最靠近您使用者的位置。 區域備援 未選取 在 Azure 可用性區域中建立 Azure Spring Apps 服務的選項。 所有區域目前不支援此功能。 軟體IP方案 隨用隨付 可讓您隨用 Azure Spring Apps 隨用隨付的定價方案。 條款 Selected 與 Marketplace 供應項目相關聯的合約複選框。 您必須選取此複選框。 部署範例專案 未選取 使用內建範例應用程式的選項。 選取 [檢閱並建立] 以檢閱您的選取項目。 然後,選取 [建立] 以布建 Azure Spring Apps 實例。
在工具列上,選取 [通知] 圖示 (鈴鐺) 以監視部署程序。 部署完成後,您可以選取 [釘選到儀錶板],這會在 Azure 入口網站 儀錶板上建立此服務的圖格,作為服務的 [概觀] 頁面的快捷方式。
選取 [移至資源 ] 以移至 [Azure Spring Apps 概觀 ] 頁面。
3.3. 準備 PostgreSQL 實例
使用下列步驟建立 適用於 PostgreSQL 的 Azure 資料庫 伺服器:
移至 Azure 入口網站,然後選取 [建立資源]。
選取 [資料庫]>[Azure Database for PostgreSQL]。
選取 [ 彈性伺服器 部署] 選項。
在 [基本] 索引標籤中填寫下列資訊:
- 伺服器名稱: my-demo-pgsql
- 區域: 美國東部
- PostgreSQL 版本: 14
- 工作負載類型: 開發
- 啟用高可用性:未選取
- 驗證方法: 僅 PostgreSQL 驗證
- 管理員用戶名稱: myadmin
- 密碼 和 確認密碼:輸入密碼。
使用下列資訊來設定 [ 網络] 索引 標籤:
- 線上方法: 公用存取(允許的IP 位址)
- 允許從 Azure 內的任何 Azure 服務公開存取此伺服器:選取
選取 [ 檢閱 + 建立 ] 以檢閱您的選取專案,然後選取 [ 建立] 以布建伺服器。 這項作業可能需要幾分鐘的時間。
前往您 Azure 入口網站上的 [PostgreSQL 伺服器]。 在 [ 概觀] 頁面上,尋找 [伺服器名稱] 值,然後記錄它以供日後使用。 您需要它來設定 Azure Spring Apps 中應用程式的環境變數。
從導覽選單中選取 [資料庫 ] 以建立資料庫 , 例如 todo。
3.4. 將應用程式實例連線至 PostgreSQL 實例
使用下列步驟來連線服務實例:
在 Azure 入口網站中,移至您的 Azure Spring Apps 執行個體。
從導覽功能表中,開啟 [ 應用程式],然後選取 [ 建立應用程式]。
在 [ 建立應用程式 ] 頁面上,填入應用程式名稱 simple-todo-api,然後選取 [Java 成品 ] 作為部署類型。
選取 [建立 ] 以完成應用程式建立,然後選取應用程式以檢視詳細數據。
移至您在 Azure 入口網站 中建立的應用程式。 在 [概 觀] 頁面上,選取 [ 指派端點 ] 以公開應用程式的公用端點。 儲存 URL 以在部署後存取應用程式。
從瀏覽窗格中選取 [服務連接器 ],然後選取 [ 建立 ] 以建立新的服務連線。
在 [基本] 索引標籤中填寫下列資訊:
- 服務類型: 適用於 PostgreSQL 的 DB 彈性伺服器
- 線上名稱:會自動產生的名稱填入,也可以加以修改。
- 訂用帳戶︰選取您的訂用帳戶。
- PostgreSQL 彈性伺服器: my-demo-pgsql
- PostgreSQL 資料庫:選取您建立的資料庫。
- 用戶端類型: SpringBoot
使用下列資訊設定 [ 下一步:驗證 ] 索引標籤:
注意
Microsoft 建議您使用最安全的可用驗證流程。 此程式中所述的驗證流程,例如資料庫、快取、傳訊或 AI 服務,在應用程式中需要高度的信任,而且不會在其他流程中帶來風險。 只有在更安全的選項,例如無密碼或無密鑰連線的受控識別時,才能使用此流程。 針對本機計算機作業,偏好使用無密碼或無密鑰連線的使用者身分識別。
- 選取您想要在計算服務和目標服務之間使用的驗證類型。:選取 [連接字元串]。
- 繼續...:選取 資料庫認證
- 用戶名稱: myadmin
- 密碼:輸入您的密碼。
選取 [下一步:網路]。 使用預設選項 [設定防火牆規則] 來啟用目標服務的存取。
選取 [下一步:檢閱和建立 ] 以檢閱您的選取專案,然後選取 [ 建立 ] 以建立連線。
3.5. 公開 RESTful API
使用下列步驟,在 Microsoft Entra 標識符中公開 RESTful API:
登入 Azure 入口網站。
如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。
搜尋並選取 [Microsoft Entra ID]。
在 [管理] 底下,選取 [應用程式註冊] > [新增註冊] 。
在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 Todo。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。
針對 支援的帳戶類型,選取 任何組織目錄中的 [帳戶] (任何Microsoft Entra 目錄 - 多租使用者) 和個人Microsoft帳戶。
選取 [暫存器] 以建立應用程式。
在應用程式 [概觀] 頁面上,尋找 [應用程式 (用戶端) 識別碼] 值,然後將其記下以供稍後使用。 您需要此項目設定 YAML 組態檔。
在 [管理] 底下,選取 [公開 API],在頁面開頭尋找 [應用程式標識符 URI],然後選取 [新增]。
在 [ 編輯應用程式識別碼 URI ] 頁面上,接受建議的應用程式識別碼 URI (
api://{client ID}
) 或使用有意義的名稱,而不是用戶端識別符,例如api://simple-todo
,然後選取 [ 儲存]。在 [管理] 底下,選取 [公開 API>新增範圍],然後輸入下列資訊:
- 針對 [範圍名稱],輸入 ToDo.Read。
- 針對 [誰可以同意],選取 [僅限系統管理員]。
- 針對 [ 管理員同意顯示名稱],輸入 [讀取 ToDo 數據]。
- 針對 [管理員同意描述],輸入 [允許已驗證的用戶讀取 ToDo 數據]。
- 針對 [狀態],請保持啟用它。
- 選取 [新增範圍]。
重複上述步驟以新增其他兩個範圍: ToDo.Write 和 ToDo.Delete。
3.6. 更新應用程式組態
使用下列步驟來更新 YAML 檔案,以使用您的 Microsoft Entra 已註冊的應用程式資訊,以建立與 RESTful API 應用程式的關聯性:
找出 應用程式的 src/main/resources/application.yml 檔案
simple-todo-api
。 更新 區段中的spring.cloud.azure.active-directory
組態,以符合下列範例。 請務必將佔位元取代為您先前建立的值。spring: cloud: azure: active-directory: profile: tenant-id: <tenant> credential: client-id: <your-application-ID-of-ToDo> app-id-uri: <your-application-ID-URI-of-ToDo>
注意
在 v1.0 令牌中,設定需要 API 的用戶端識別碼,而在 v2.0 令牌中,您可以在要求中使用用戶端識別碼或應用程式識別碼 URI。 您可以設定這兩者,以正確完成物件驗證。
允許
tenant-id
的值包括:common
、organizations
、consumers
或租用戶標識碼。 如需這些值的詳細資訊,請參閱 使用錯誤的端點(個人和組織帳戶) 一節錯誤 AADSTS50020 - 來自識別提供者的用戶帳戶不存在於租使用者中。 如需轉換單一租使用者應用程式的資訊,請參閱 將單一租使用者應用程式轉換成Microsoft Entra 標識碼上的多租使用者。使用下列命令重建範例專案:
./mvnw clean package
4.將應用程式部署至 Azure Spring Apps
您現在可以將應用程式部署至 Azure Spring Apps。
使用下列步驟來部署使用適用於 Azure Spring Apps 的 Maven 外掛程式:
瀏覽至 完整的 目錄,然後執行下列命令以在 Azure Spring Apps 中設定應用程式:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
下列清單描述命令互動:
- OAuth2 登入:您必須根據 OAuth2 通訊協定授權登入 Azure。
- 選取訂用帳戶:選取您所建立之 Azure Spring Apps 實例的訂用帳戶清單編號,預設為清單中的第一個訂用帳戶。 如果您使用預設號碼,請直接按 Enter 。
- 在 Azure 中使用現有的 Azure Spring Apps:按 y 以使用現有的 Azure Spring Apps 實例。
- 選取 [Azure Spring Apps 以進行部署:選取您所建立的 Azure Spring Apps 實例數目。 如果您使用預設號碼,請直接按 Enter 。
- 在 Azure Spring Apps <中使用您的實例名稱>中的現有應用程式:按 y 以使用所建立的應用程式。
- 確認儲存上述所有組態:按 y。 如果您按下 n,則組態不會儲存在 POM 檔案中。
使用下列命令來部署應用程式:
./mvnw azure-spring-apps:deploy
下列清單描述命令互動:
- OAuth2 登入:您必須根據 OAuth2 通訊協定授權登入 Azure。
執行命令之後,您可以從下列記錄訊息中看到部署成功:
[INFO] Deployment Status: Running
[INFO] InstanceName:simple-todo-api-default-15-xxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:N/A
[INFO] Getting public url of app(simple-todo-api)...
[INFO] Application url: https://<your-Azure-Spring-Apps-instance-name>-simple-todo-api.azuremicroservices.io
5.驗證應用程式
您現在可以存取 RESTful API,以查看其是否正常運作。
5.1. 要求存取權杖
RESTful API 會作為資源伺服器,此伺服器受到Microsoft Entra 標識符的保護。 取得存取令牌之前,您必須在 Microsoft Entra ID 中註冊另一個應用程式,並將許可權授與名為 ToDoWeb
的用戶端應用程式。
註冊客戶端應用程式
使用下列步驟在 Microsoft Entra ID 中註冊應用程式,用來新增應用程式的許可權 ToDo
:
登入 Azure 入口網站。
如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。
搜尋並選取 [Microsoft Entra ID]。
在 [管理] 底下,選取 [應用程式註冊] > [新增註冊] 。
在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 ToDoWeb。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。
針對支援的帳戶類型,請僅使用此組織目錄中的 [帳戶] 預設值。
選取 [暫存器] 以建立應用程式。
在應用程式 [概觀] 頁面上,尋找 [應用程式 (用戶端) 識別碼] 值,然後將其記下以供稍後使用。 您需要它才能取得存取令牌。
選取 [API 權限]>[新增權限]>[我的 API]。
ToDo
選取您稍早註冊的應用程式,然後選取 ToDo.Read、ToDo.Write 和 ToDo.Delete 許可權。 選取 [新增權限]。針對您新增的許可權,選取 [授與管理員同意] 以 <授與您的租用戶名稱> 許可權。
新增使用者以存取 RESTful API
使用下列步驟,在您的 Microsoft Entra 租使用者中建立成員使用者。 然後,用戶可以透過 RESTful API 管理應用程式的數據 ToDo
。
在 [管理] 底下,選取 [使用者>] [新增使用者>] [建立新使用者]。
在 [建立新使用者] 頁面上,輸入以下資訊:
- 用戶主體名稱:輸入用戶的名稱。
- 顯示名稱:輸入使用者的顯示名稱。
- 密碼:複製 [密碼] 方塊中提供的自動產生的密碼。
注意
新用戶必須完成第一次登入驗證並更新其密碼,否則當您取得存取令牌時收到
AADSTS50055: The password is expired
錯誤。當新的使用者登入時,他們會收到 [需要動作] 提示。 他們可以選擇 [ 稍後 詢問] 略過驗證。
選取 [檢閱 + 建立] 以檢閱您的選項。 選取 [建立] 以建立使用者。
更新 Swagger UI 授權的 OAuth2 組態
使用下列步驟來更新 Swagger UI 授權的 OAuth2 組態。 然後,您可以授權使用者透過 ToDoWeb
應用程式取得存取令牌。
2. 準備 Spring 專案
若要部署 RESTful API 應用程式,第一個步驟是準備 Spring 專案以在本機執行。
使用下列步驟在本機複製並執行應用程式:
3.準備雲端環境
執行此範例應用程式所需的主要資源是 Azure Spring Apps 實例和 適用於 PostgreSQL 的 Azure 資料庫 實例。 下列各節說明如何建立這些資源。
3.1. 登入 Azure 入口網站
移至 Azure 入口網站,然後輸入您的認證以登入入口網站。 預設檢視是您的服務儀表板。
3.2. 建立 Azure Spring Apps 執行個體
使用下列步驟來建立服務實例:
選取 入口網站角落的 [建立資源 ]。
選取 [計算>Azure Spring Apps]。
填寫 [基本] 表單。 使用下表作為完成表單的指南。 建議 的機制 值為 標準耗用量和專用 (預覽版) 。
設定 建議的值 描述 訂用帳戶 您的訂閱名稱。 您要用於伺服器的 Azure 訂用帳戶。 如果您有多個訂用帳戶,請選擇您想要針對資源計費的訂用帳戶。 資源群組 myresourcegroup 新的資源群組名稱,或您訂用帳戶中現有的資源群組名稱。 名稱 myasa 識別 Azure Spring Apps 服務的唯一名稱。 名稱長度必須為 4 到 32 個字元,且只能包含小寫字母、數字及連字號。 服務名稱的第一個字元必須是字母,且最後一個字元必須是字母或數字。 計劃 標準耗用量和專用 (預覽) 定價方案會決定與您的實例相關聯的資源和成本。 區域 最接近用戶的區域。 最靠近您的使用者的位置。 Container Apps 環境 myenvironment 選項,可選取要與其他服務和資源分享相同虛擬網路的 Container Apps 環境實例。 使用下表作為容器應用程式環境建立指南:
設定 建議的值 描述 環境名稱 myenvironment 識別 Azure Container Apps 環境服務的唯一名稱。 計劃 耗用 定價方案會決定與您的實例相關聯的資源和成本。 區域備援 已停用 在 Azure 可用性區域中建立 Container Apps 環境服務的選項。 選取 [檢閱並建立] 以檢閱您的選取項目。 然後,選取 [建立] 以布建 Azure Spring Apps 實例。
在工具列上,選取 [通知] 圖示 (鈴鐺) 以監視部署程序。 部署完成之後,您可以選取 [釘選到儀錶板],這會在 Azure 入口網站 儀錶板上建立此服務的圖格,做為服務的 [概觀] 頁面的快捷方式。
選取 [移至資源 ] 以開啟服務的 [概 觀 ] 頁面。
重要
取用工作負載配置檔具有隨用隨付計費模型,不需要開始成本。 系統會根據布建的資源,向您收取專用工作負載配置文件的費用。 如需詳細資訊,請參閱 Azure Container Apps 和 Azure Spring Apps 定價中的工作負載配置檔。
3.3. 準備 PostgreSQL 實例
使用下列步驟建立 適用於 PostgreSQL 的 Azure 資料庫 伺服器:
移至 Azure 入口網站,然後選取 [建立資源]。
選取 [資料庫]>[Azure Database for PostgreSQL]。
選取 [ 彈性伺服器 部署] 選項。
在 [基本] 索引標籤中填寫下列資訊:
- 伺服器名稱: my-demo-pgsql
- 區域: 美國東部
- PostgreSQL 版本: 14
- 工作負載類型: 開發
- 啟用高可用性:未選取
- 驗證方法: 僅 PostgreSQL 驗證
- 管理員用戶名稱: myadmin
- 密碼 和 確認密碼:輸入密碼。
使用下列資訊來設定 [ 網络] 索引 標籤:
- 線上方法: 公用存取(允許的IP 位址)
- 允許從 Azure 內的任何 Azure 服務公開存取此伺服器:選取
選取 [ 檢閱 + 建立 ] 以檢閱您的選取專案,然後選取 [ 建立] 以布建伺服器。 這項作業可能需要幾分鐘的時間。
前往您 Azure 入口網站上的 [PostgreSQL 伺服器]。 在 [ 概觀] 頁面上,尋找 [伺服器名稱] 值,然後記錄它以供日後使用。 您需要它來設定 Azure Spring Apps 中應用程式的環境變數。
從導覽選單中選取 [資料庫 ] 以建立資料庫 , 例如 todo。
3.4. 將應用程式實例連線至 PostgreSQL 實例
使用下列步驟來連線服務實例:
在 Azure 入口網站中,移至您的 Azure Spring Apps 執行個體。
從導覽功能表中,開啟 [ 應用程式],然後選取 [ 建立應用程式]。
在 [ 建立應用程式 ] 頁面上,填入應用程式名稱 simple-todo-api ,然後選取 [Java 成品 ] 作為部署類型。
選取 [建立 ] 以完成應用程式建立,然後選取應用程式以檢視詳細數據。
移至您在 Azure 入口網站 中建立的應用程式。 在 [概 觀] 頁面上,選取 [ 指派端點 ] 以公開應用程式的公用端點。 儲存 URL 以在部署後存取應用程式。
移至您建立的應用程式,展開 [設定],然後從導覽功能表中選取 [組態],然後選取 [環境變數] 來設定環境變數。
為 PostgreSQL 連線新增下列環境變數,然後選取 [ 儲存 ] 以完成應用程式組態更新。 請務必將佔位元取代為您先前建立的您自己的值。
環境變數 值 SPRING_DATASOURCE_URL
jdbc:postgresql://<your-PostgreSQL-server-name>:5432/<your-PostgreSQL-database-name>
SPRING_DATASOURCE_USERNAME
<your-PostgreSQL-admin-user>
SPRING_DATASOURCE_PASSWORD
<your-PostgreSQL-admin-password>
3.5. 公開 RESTful API
使用下列步驟,在 Microsoft Entra 標識符中公開 RESTful API:
登入 Azure 入口網站。
如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。
搜尋並選取 [Microsoft Entra ID]。
在 [管理] 底下,選取 [應用程式註冊] > [新增註冊] 。
在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 Todo。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。
針對 支援的帳戶類型,選取 任何組織目錄中的 [帳戶] (任何Microsoft Entra 目錄 - 多租使用者) 和個人Microsoft帳戶。
選取 [暫存器] 以建立應用程式。
在應用程式 [概觀] 頁面上,尋找 [應用程式 (用戶端) 識別碼] 值,然後將其記下以供稍後使用。 您需要此項目設定 YAML 組態檔。
在 [管理] 底下,選取 [公開 API],在頁面開頭尋找 [應用程式標識符 URI],然後選取 [新增]。
在 [ 編輯應用程式識別碼 URI ] 頁面上,接受建議的應用程式識別碼 URI (
api://{client ID}
) 或使用有意義的名稱,而不是用戶端識別符,例如api://simple-todo
,然後選取 [ 儲存]。在 [管理] 底下,選取 [公開 API>新增範圍],然後輸入下列資訊:
- 針對 [範圍名稱],輸入 ToDo.Read。
- 針對 [誰可以同意],選取 [僅限系統管理員]。
- 針對 [ 管理員同意顯示名稱],輸入 [讀取 ToDo 數據]。
- 針對 [管理員同意描述],輸入 [允許已驗證的用戶讀取 ToDo 數據]。
- 針對 [狀態],請保持啟用它。
- 選取 [新增範圍]。
重複上述步驟以新增其他兩個範圍: ToDo.Write 和 ToDo.Delete。
3.6. 更新應用程式組態
使用下列步驟來更新 YAML 檔案,以使用您的 Microsoft Entra 已註冊的應用程式資訊,以建立與 RESTful API 應用程式的關聯性:
找出 應用程式的 src/main/resources/application.yml 檔案
simple-todo-api
。 更新 區段中的spring.cloud.azure.active-directory
組態,以符合下列範例。 請務必將佔位元取代為您先前建立的值。spring: cloud: azure: active-directory: profile: tenant-id: <tenant> credential: client-id: <your-application-ID-of-ToDo> app-id-uri: <your-application-ID-URI-of-ToDo>
注意
在 v1.0 令牌中,設定需要 API 的用戶端識別碼,而在 v2.0 令牌中,您可以在要求中使用用戶端識別碼或應用程式識別碼 URI。 您可以設定這兩者,以正確完成物件驗證。
允許
tenant-id
的值包括:common
、organizations
、consumers
或租用戶標識碼。 如需這些值的詳細資訊,請參閱 使用錯誤的端點(個人和組織帳戶) 一節錯誤 AADSTS50020 - 來自識別提供者的用戶帳戶不存在於租使用者中。 如需轉換單一租使用者應用程式的資訊,請參閱 將單一租使用者應用程式轉換成Microsoft Entra 標識碼上的多租使用者。使用下列命令重建範例專案:
./mvnw clean package
4.將應用程式部署至 Azure Spring Apps
您現在可以將應用程式部署至 Azure Spring Apps。
使用下列步驟來部署使用適用於 Azure Spring Apps 的 Maven 外掛程式:
瀏覽至 完整的 目錄,然後執行下列命令以在 Azure Spring Apps 中設定應用程式:
./mvnw com.microsoft.azure:azure-spring-apps-maven-plugin:1.19.0:config
下列清單描述命令互動:
- OAuth2 登入:您必須根據 OAuth2 通訊協定授權登入 Azure。
- 選取訂用帳戶:選取您所建立之 Azure Spring Apps 實例的訂用帳戶清單編號,預設為清單中的第一個訂用帳戶。 如果您使用預設號碼,請直接按 Enter 。
- 在 Azure 中使用現有的 Azure Spring Apps:按 y 以使用現有的 Azure Spring Apps 實例。
- 選取 [Azure Spring Apps 以進行部署:選取您所建立的 Azure Spring Apps 實例數目。 如果您使用預設號碼,請直接按 Enter 。
- 在 Azure Spring Apps <中使用您的實例名稱>中的現有應用程式:按 y 以使用所建立的應用程式。
- 確認儲存上述所有組態:按 y。 如果您按下 n,則組態不會儲存在 POM 檔案中。
使用下列命令來部署應用程式:
./mvnw azure-spring-apps:deploy
下列清單描述命令互動:
- OAuth2 登入:您必須根據 OAuth2 通訊協定授權登入 Azure。
執行命令之後,您可以從下列記錄訊息中看到部署成功:
[INFO] Deployment(default) is successfully created
[INFO] Starting Spring App after deploying artifacts...
[INFO] Deployment Status: Running
[INFO] InstanceName:demo--default-xxxxxxx-xxxxxxxxx-xxxxx Status:Running Reason:null DiscoverStatus:NONE
[INFO] Getting public url of app(demo)...
[INFO] Application url: https://demo.<unique-identifier>.<region-name>.azurecontainerapps.io
5.驗證應用程式
您現在可以存取 RESTful API,以查看其是否正常運作。
5.1. 要求存取權杖
RESTful API 會作為資源伺服器,此伺服器受到Microsoft Entra 標識符的保護。 取得存取令牌之前,您必須在 Microsoft Entra ID 中註冊另一個應用程式,並將許可權授與名為 ToDoWeb
的用戶端應用程式。
註冊客戶端應用程式
使用下列步驟在 Microsoft Entra ID 中註冊應用程式,用來新增應用程式的許可權 ToDo
:
登入 Azure 入口網站。
如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。
搜尋並選取 [Microsoft Entra ID]。
在 [管理] 底下,選取 [應用程式註冊] > [新增註冊] 。
在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 ToDoWeb。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。
針對支援的帳戶類型,請僅使用此組織目錄中的 [帳戶] 預設值。
選取 [暫存器] 以建立應用程式。
在應用程式 [概觀] 頁面上,尋找 [應用程式 (用戶端) 識別碼] 值,然後將其記下以供稍後使用。 您需要它才能取得存取令牌。
選取 [API 權限]>[新增權限]>[我的 API]。
ToDo
選取您稍早註冊的應用程式,然後選取 ToDo.Read、ToDo.Write 和 ToDo.Delete 許可權。 選取 [新增權限]。針對您新增的許可權,選取 [授與管理員同意] 以 <授與您的租用戶名稱> 許可權。
新增使用者以存取 RESTful API
使用下列步驟,在您的 Microsoft Entra 租使用者中建立成員使用者。 然後,用戶可以透過 RESTful API 管理應用程式的數據 ToDo
。
在 [管理] 底下,選取 [使用者>] [新增使用者>] [建立新使用者]。
在 [建立新使用者] 頁面上,輸入以下資訊:
- 用戶主體名稱:輸入用戶的名稱。
- 顯示名稱:輸入使用者的顯示名稱。
- 密碼:複製 [密碼] 方塊中提供的自動產生的密碼。
注意
新用戶必須完成第一次登入驗證並更新其密碼,否則當您取得存取令牌時收到
AADSTS50055: The password is expired
錯誤。當新的使用者登入時,他們會收到 [需要動作] 提示。 他們可以選擇 [ 稍後 詢問] 略過驗證。
選取 [檢閱 + 建立] 以檢閱您的選項。 選取 [建立] 以建立使用者。
更新 Swagger UI 授權的 OAuth2 組態
使用下列步驟來更新 Swagger UI 授權的 OAuth2 組態。 然後,您可以授權使用者透過 ToDoWeb
應用程式取得存取令牌。
取得存取令牌
使用下列步驟來使用 OAuth 2.0 授權碼流程 方法來取得具有 Microsoft Entra ID 的 ToDo
存取令牌,然後存取應用程式的 RESTful API:
開啟應用程式公開的 URL,然後選取 [ 授權 ] 以準備 OAuth2 驗證。
在 [可用的授權] 視窗中,在 [client_id] 字段中輸入應用程式的用戶端標識符
ToDoWeb
、選取 [範圍] 字段的所有範圍、忽略 [client_secret] 字段,然後選取 [授權] 以重新導向至 [Microsoft Entra 登入] 頁面。
完成與上一個使用者的登入之後,您就會回到 [可用的授權 ] 視窗。
5.2. 存取 RESTful API
使用下列步驟來存取 Swagger UI 中應用程式的 RESTful API ToDo
:
選取 API POST /api/simple-todo/lists ,然後選取 [ 試用]。輸入下列要求本文,然後選取 [ 執行 ] 以建立ToDo清單。
{ "name": "My List" }
執行完成之後,您會看到下列 響應主體:
{ "id": "<ID-of-the-ToDo-list>", "name": "My List", "description": null }
選取 API POST /api/simple-todo/lists/{listId}/items ,然後選取 [ 試用]。針對 listId,輸入您先前建立的 ToDo 清單識別碼,輸入下列要求本文,然後選取 [ 執行 ] 以建立 ToDo 專案。
{ "name": "My first ToDo item", "listId": "<ID-of-the-ToDo-list>", "state": "todo" }
此動作會傳回下列 ToDo 專案:
{ "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": null, "state": "todo", "dueDate": "2023-07-11T13:59:24.9033069+08:00", "completedDate": null }
選取 API GET /api/simple-todo/lists ,然後選取 [ 執行 ] 以查詢 ToDo 清單。 此動作會傳回下列 ToDo 清單:
[ { "id": "<ID-of-the-ToDo-list>", "name": "My List", "description": null } ]
選取 API GET /api/simple-todo/lists/{listId}/items ,然後選取 [ 試用]。針對 listId,輸入您先前建立的 ToDo 清單識別碼,然後選取 [ 執行 ] 以查詢 ToDo 專案。 此動作會傳回下列 ToDo 專案:
[ { "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": null, "state": "todo", "dueDate": "2023-07-11T13:59:24.903307+08:00", "completedDate": null } ]
選取 API PUT /api/simple-todo/lists/{listId}/items/{itemId} ,然後選取 [ 試用]。針對 listId,輸入 ToDo 清單識別碼。 針對 itemId,輸入 ToDo 專案識別碼,輸入下列要求本文,然後選取 [ 執行 ] 以更新 ToDo 專案。
{ "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": "Updated description.", "dueDate": "2023-07-11T13:59:24.903307+08:00", "state": "inprogress" }
此動作會傳回下列更新的 ToDo 專案:
{ "id": "<ID-of-the-ToDo-item>", "listId": "<ID-of-the-ToDo-list>", "name": "My first ToDo item", "description": "Updated description.", "state": "inprogress", "dueDate": "2023-07-11T05:59:24.903307Z", "completedDate": null }
選取 API DELETE /api/simple-todo/lists/{listId}/items/{itemId} ,然後選取 [ 試用]。針對 listId,輸入 ToDo 清單識別碼。 針對 itemId,輸入 ToDo 專案識別碼,然後選取 [ 執行 ] 以刪除 ToDo 專案。 您應該會看到伺服器回應碼為
204
。
6.清除資源
您可以刪除 Azure 資源群組,其中包括資源群組中的所有資源。
使用下列步驟來刪除整個資源群組 (包括新建立的服務):
在 Azure 入口網站中找出您的資源群組。
在導覽功能表上,選取 [資源群組]。 然後選取您的資源群組名稱 (例如 myresourcegroup)。
在資源群組頁面上,選取 [刪除]。 在文字方塊中輸入您的資源群組名稱 (例如 myresourcegroup),以確認刪除。 然後,選取 [刪除]。
使用下列步驟來刪除整個資源群組 (包括新建立的服務):
在 Azure 入口網站中找出您的資源群組。
在導覽功能表上,選取 [資源群組]。 然後選取您的資源群組名稱 (例如 myresourcegroup)。
在資源群組頁面上,選取 [刪除]。 在文字方塊中輸入您的資源群組名稱 (例如 myresourcegroup),以確認刪除。 然後,選取 [刪除]。
7. 後續步驟
如需詳細資訊,請參閱下列文章: