快速入門:將 RESTful API 應用程式部署至 Azure Spring Apps
注意
前 50 個 vCPU 小時和 100 GB 的記憶體是每月可用。 如需詳細資訊,請參閱 Azure Spring Apps 在 Azure 部落格上的應用程式上執行更多成本、成本降低。
注意
Azure Spring Apps 是 Azure Spring Cloud 服務的新名稱。 雖然服務有新的名稱,但是您暫時還是會在某些位置看到舊的名稱。我們正在致力更新螢幕擷取畫面、影片和圖表等資產。
本文說明如何將受 Microsoft Entra ID 保護的 RESTful API 應用程式部署到 Azure Spring Apps。 此範例專案是以 Simple Todo Web 應用程式為基礎的簡化版本,它只提供後端服務,並使用 Microsoft Entra ID 來保護 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 任何權限的應用程式授與同意。
- Cloud Application 管理員 istrator 或 Application 管理員 istrator,用於授與要求任何 API 任何許可權的應用程式同意,但 Microsoft Graph 應用程式角色除外(應用程式許可權)。
- 自定義目錄角色,其中包含 將許可權授與應用程式的許可權,以取得應用程式所需的許可權。
如需詳細資訊,請參閱 將全租使用者管理員同意授與應用程式。
如果您是第一次在目標訂用帳戶中部署 Azure Spring Apps Enterprise 方案實例,請參閱 Azure Marketplace 中企業方案的需求一節。
Git。
Java Development Kit (JDK)第 17 版。
Microsoft Entra 租用戶。 如需建立一個的指示,請參閱 快速入門:在 Microsoft Entra ID 中建立新的租使用者。
Azure 訂用帳戶:如果您沒有 Azure 訂用帳戶,請在開始之前建立 Azure 免費帳戶 。
下列其中一個角色:
- 全域管理員或特殊權限角色管理員,用於為要求任何 API 任何權限的應用程式授與同意。
- Cloud Application 管理員 istrator 或 Application 管理員 istrator,用於授與要求任何 API 任何許可權的應用程式同意,但 Microsoft Graph 應用程式角色 (應用程式許可權) 除外。
- 自定義目錄角色,其中包含 將許可權授與應用程式的許可權,以取得應用程式所需的許可權。
如需詳細資訊,請參閱 將全租使用者管理員同意授與應用程式。
Git。
Java Development Kit (JDK)第 17 版。
Microsoft Entra 租用戶。 如需建立一個的指示,請參閱 快速入門:在 Microsoft Entra ID 中建立新的租使用者。
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
- 密碼 和 確認密碼:輸入密碼。
使用下列資訊來設定 [ 網络] 索引 標籤:
- 連線 ivity 方法:公用存取(允許的 IP 位址)
- 允許從 Azure 內的任何 Azure 服務公開存取此伺服器:選取
選取 [ 檢閱 + 建立 ] 以檢閱您的選取專案,然後選取 [ 建立] 以布建伺服器。 這項作業可能需要幾分鐘的時間。
移至 Azure 入口網站 中的PostgreSQL伺服器。 在 [ 概觀] 頁面上,尋找 [伺服器名稱] 值,然後記錄它以供日後使用。 您需要它來設定 Azure Spring Apps 中應用程式的環境變數。
從導覽選單中選取 [資料庫 ] 以建立資料庫 , 例如 todo。
3.4. 將應用程式實例 連線 至 PostgreSQL 實例
使用下列步驟來連線服務實例:
移至 Azure 入口網站 中的 Azure Spring Apps 實例。
從導覽功能表中,開啟 [ 應用程式],然後選取 [ 建立應用程式]。
在 [ 建立應用程式 ] 頁面上,填入應用程式名稱 simple-todo-api,然後選取 [Java 成品 ] 作為部署類型。
選取 [建立 ] 以完成應用程式建立,然後選取應用程式以檢視詳細數據。
移至您在 Azure 入口網站 中建立的應用程式。 在 [概 觀] 頁面上,選取 [ 指派端點 ] 以公開應用程式的公用端點。 儲存 URL 以在部署後存取應用程式。
從瀏覽窗格中選取 [服務 連線 或],然後選取 [建立] 以建立新的服務連線。
在 [基本] 索引標籤中填寫下列資訊:
- 服務類型: 適用於 PostgreSQL 的 DB 彈性伺服器
- 連線 ion 名稱:會自動產生的名稱填入,也可以加以修改。
- 訂用帳戶︰選取您的訂用帳戶。
- PostgreSQL 彈性伺服器: my-demo-pgsql
- PostgreSQL 資料庫:選取您建立的資料庫。
- 用戶端類型: SpringBoot
使用下列資訊設定 [ 下一步:驗證 ] 索引標籤:
- 選取您想要在計算服務和目標服務之間使用的驗證類型。:選取 [連線 ion 字串]。
- 繼續...:選取 資料庫認證
- 用戶名稱: 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
- 密碼 和 確認密碼:輸入密碼。
使用下列資訊來設定 [ 網络] 索引 標籤:
- 連線 ivity 方法:公用存取(允許的 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. 後續步驟
如需詳細資訊,請參閱下列文章: