Share via


快速入門:將 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。

Screenshot of the Swagger UI that shows the API document.

下圖顯示系統的架構:

Diagram that shows the architecture of a Spring web application.

本文說明建立資源並將其部署至 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 專案以在本機執行。

使用下列步驟在本機複製並執行應用程式:

  1. 使用下列命令從 GitHub 複製範例專案:

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. 如果您想要在本機執行應用程式,請先完成公開 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 服務實例:

  1. 選取 Azure 入口網站 角落的 [建立資源]。

  2. 選取 [計算>Azure Spring Apps]。

  3. 填寫 [基本] 窗體,其中包含下列資訊:

    設定 建議的值 描述
    訂用帳戶 您的訂閱名稱。 您想要用於伺服器的 Azure 訂用帳戶。 如果您有多個訂用帳戶,請選擇您想要針對資源計費的訂用帳戶。
    資源群組 myresourcegroup 新的資源組名或您訂用帳戶的現有資源組名。
    名稱 myasa 識別 Azure Spring Apps 服務的唯一名稱。 名稱長度必須介於 4 到 32 個字元之間,而且只能包含小寫字母、數位和連字元。 服務名稱的第一個字元必須是字母,最後一個字元必須是字母或數位。
    計劃 企業 決定與實例相關聯的資源和成本的定價方案。
    區域 最接近用戶的區域。 最接近使用者的位置。
    區域備援 未選取 在 Azure 可用性區域中建立 Azure Spring Apps 服務的選項。 所有區域目前不支援此功能。
    軟體IP方案 隨用隨付 可讓您隨用 Azure Spring Apps 隨用隨付的定價方案。
    條款 Selected 與 Marketplace 供應項目相關聯的合約複選框。 您必須選取此複選框。
    部署範例專案 未選取 使用內建範例應用程式的選項。
  4. 選取 [ 檢閱] 和 [建立] 以檢閱您的選取專案。 然後,選取 [建立] 以布建 Azure Spring Apps 實例。

  5. 在工具列上,選取 [通知 ] 圖示(鈴鐺),以監視部署程式。 部署完成之後,您可以選取 [釘選到儀錶板],這會在 Azure 入口網站 儀錶板上建立此服務的圖格,作為服務的 [概觀] 頁面的快捷方式。

    Screenshot of the Azure portal that shows the Notifications pane for Azure Spring Apps creation.

  6. 選取 [移至資源 ] 以移至 [Azure Spring Apps 概觀 ] 頁面。

3.3. 準備 PostgreSQL 實例

使用下列步驟建立 適用於 PostgreSQL 的 Azure 資料庫 伺服器:

  1. 移至 Azure 入口網站,然後選取 [建立資源]。

  2. 選取 [資料庫> 適用於 PostgreSQL 的 Azure 資料庫。

  3. 選取 [ 彈性伺服器 部署] 選項。

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. 填寫 [基本] 索引標籤,其中包含下列資訊:

    • 伺服器名稱my-demo-pgsql
    • 區域美國東部
    • PostgreSQL 版本14
    • 工作負載類型開發
    • 啟用高可用性:未選取
    • 驗證方法僅 PostgreSQL 驗證
    • 管理員 用戶名稱myadmin
    • 密碼確認密碼:輸入密碼。
  5. 使用下列資訊來設定 [ 網络] 索引 標籤:

    • 連線 ivity 方法公用存取(允許的 IP 位址)
    • 允許從 Azure 內的任何 Azure 服務公開存取此伺服器:選取
  6. 選取 [ 檢閱 + 建立 ] 以檢閱您的選取專案,然後選取 [ 建立] 以布建伺服器。 這項作業可能需要幾分鐘的時間。

  7. 移至 Azure 入口網站 中的PostgreSQL伺服器。 在 [ 概觀] 頁面上,尋找 [伺服器名稱] 值,然後記錄它以供日後使用。 您需要它來設定 Azure Spring Apps 中應用程式的環境變數。

  8. 從導覽選單中選取 [資料庫 ] 以建立資料庫 , 例如 todo

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. 將應用程式實例 連線 至 PostgreSQL 實例

使用下列步驟來連線服務實例:

  1. 移至 Azure 入口網站 中的 Azure Spring Apps 實例。

  2. 從導覽功能表中,開啟 [ 應用程式],然後選取 [ 建立應用程式]。

  3. 在 [ 建立應用程式 ] 頁面上,填入應用程式名稱 simple-todo-api,然後選取 [Java 成品 ] 作為部署類型。

  4. 選取 [建立 ] 以完成應用程式建立,然後選取應用程式以檢視詳細數據。

  5. 移至您在 Azure 入口網站 中建立的應用程式。 在 [概 觀] 頁面上,選取 [ 指派端點 ] 以公開應用程式的公用端點。 儲存 URL 以在部署後存取應用程式。

  6. 從瀏覽窗格中選取 [服務 連線 器],然後選取 [建立] 以建立新的服務連線。

    Screenshot of the Azure portal that shows the enterprise plan Service Connector page with the Create button highlighted.

  7. 填寫 [基本] 索引標籤,其中包含下列資訊:

    • 服務類型適用於 PostgreSQL 的 DB 彈性伺服器
    • 連線 ion 名稱:會自動產生的名稱填入,也可以加以修改。
    • 訂用帳戶︰選取您的訂用帳戶。
    • PostgreSQL 彈性伺服器my-demo-pgsql
    • PostgreSQL 資料庫:選取您建立的資料庫。
    • 用戶端類型SpringBoot

    Screenshot of the Azure portal that shows the Basics tab of the Create connection pane for connecting to Service Bus.

  8. 使用下列資訊設定 [ 下一步:驗證 ] 索引標籤:

    • 選取您想要在計算服務和目標服務之間使用的驗證類型。:選取 [連線 ion 字串]。
    • 繼續...:選取 資料庫認證
    • 用戶名稱myadmin
    • 密碼:輸入您的密碼。

    Screenshot of the Azure portal that shows the Authentication tab of the Create connection pane with the Connection string option highlighted.

  9. 選取 [下一步:網路]。 使用預設選項 [設定防火牆規則] 來啟用目標服務的存取。

  10. 選取 [下一步:檢閱和建立 ] 以檢閱您的選取專案,然後選取 [ 建立 ] 以建立連線。

3.5. 公開 RESTful API

使用下列步驟,在 Microsoft Entra 標識符中公開 RESTful API:

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。

  3. 搜尋並選取 [Microsoft Entra ID]

  4. 在 [管理] 底下,選取 [應用程式註冊]> [新增註冊]

  5. 在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 Todo。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。

  6. 針對 支援的帳戶類型,選取 任何組織目錄中的 [帳戶] (任何 Microsoft Entra 目錄 - 多租使用者) 和個人 Microsoft 帳戶

  7. 選取 [暫存器] 以建立應用程式。

  8. 在應用程式 [概觀] 頁面上,尋找 [應用程式] [用戶端] 識別符 值,然後記錄它以供稍後使用。 您需要此項目設定 YAML 組態檔。

  9. 在 [管理] 底下,選取 [公開 API],在頁面開頭尋找 [應用程式標識符 URI],然後選取 [新增]。

  10. 在 [ 編輯應用程式識別碼 URI ] 頁面上,接受建議的應用程式識別碼 URI (api://{client ID}) 或使用有意義的名稱,而不是用戶端識別符,例如 api://simple-todo,然後選取 [ 儲存]。

  11. 在 [管理] 底下,選取 [公開 API>新增範圍],然後輸入下列資訊:

    • 針對 [範圍名稱],輸入 ToDo.Read
    • 針對 神秘 可以同意,請只選取 [管理員]。
    • 如需 管理員 同意顯示名稱,請輸入 [讀取 ToDo 數據]。
    • 針對 管理員 同意描述,輸入 [允許已驗證的用戶讀取ToDo數據]。
    • 針對 [狀態],請保持啟用它。
    • 選取新增範圍
  12. 重複上述步驟以新增其他兩個範圍: ToDo.WriteToDo.Delete

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. 更新應用程式組態

使用下列步驟來更新 YAML 檔案,以使用 Microsoft Entra 註冊的應用程式資訊來建立與 RESTful API 應用程式的關聯性:

  1. 找出 應用程式的 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 的值包括: commonorganizationsconsumers或租用戶標識碼。 如需這些值的詳細資訊,請參閱 使用錯誤的端點(個人和組織帳戶) 一節錯誤 AADSTS50020 - 來自識別提供者的用戶帳戶不存在於租使用者中。 如需轉換單一租使用者應用程式的資訊,請參閱 在 Microsoft Entra 識別碼上將單一租使用者應用程式轉換成多租使用者。

  2. 使用下列命令重建範例專案:

    ./mvnw clean package
    

4.將應用程式部署至 Azure Spring Apps

您現在可以將應用程式部署至 Azure Spring Apps。

使用下列步驟來部署使用適用於 Azure Spring AppsMaven 外掛程式:

  1. 瀏覽至 完整的 目錄,然後執行下列命令以在 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 檔案中。
  2. 使用下列命令來部署應用程式:

    ./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

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。

  3. 搜尋並選取 [Microsoft Entra ID]

  4. 在 [管理] 底下,選取 [應用程式註冊]> [新增註冊]

  5. 在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 ToDoWeb。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。

  6. 針對支援的帳戶類型,請僅使用此組織目錄中的 [帳戶] 預設值

  7. 選取 [暫存器] 以建立應用程式。

  8. 在應用程式 [概觀] 頁面上,尋找 [應用程式] [用戶端] 識別符 值,然後記錄它以供稍後使用。 您需要它才能取得存取令牌。

  9. 選取 [API 許可權>][新增許可權>我的 API]。 ToDo選取您稍早註冊的應用程式,然後選取 ToDo.ReadToDo.WriteToDo.Delete 許可權。 選取新增權限

  10. 針對您新增的許可權,選取 [授與管理員同意] 以 <授與您的租用戶名稱> 許可權。

    Screenshot of the Azure portal that shows the API permissions of a web application.

新增使用者以存取 RESTful API

使用下列步驟,在您的 Microsoft Entra 租使用者中建立成員使用者。 然後,用戶可以透過 RESTful API 管理應用程式的數據 ToDo

  1. 在 [管理] 底下,選取 [使用者>] [新增使用者>] [建立新使用者]。

  2. 在 [ 建立新的使用者 ] 頁面上,輸入下列資訊:

    • 用戶主體名稱:輸入用戶的名稱。
    • 顯示名稱:輸入使用者的顯示名稱。
    • 密碼:複製 [密碼] 方塊中提供的自動產生的密碼。

    注意

    新用戶必須完成第一次登入驗證並更新其密碼,否則當您取得存取令牌時收到 AADSTS50055: The password is expired 錯誤。

    當新的使用者登入時,他們會收到 [需要動作] 提示。 他們可以選擇 [ 稍後 詢問] 略過驗證。

  3. 選取 [ 檢閱 + 建立 ] 以檢閱您的選取專案。 選取 [建立 ] 以建立使用者。

更新 Swagger UI 授權的 OAuth2 組態

使用下列步驟來更新 Swagger UI 授權的 OAuth2 組態。 然後,您可以授權使用者透過 ToDoWeb 應用程式取得存取令牌。

  1. 在 Azure 入口網站 中開啟您的 Microsoft Entra ID 租使用者,然後移至已註冊ToDoWeb的應用程式。

  2. 在 [管理] 底下,選取 [驗證],選取 [新增平臺],然後選取 [單頁應用程式]。

  3. 使用格式<your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html做為 [重新導向 URI] 字段中的 OAuth2 重新導向 URL,然後選取 [設定]。

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

2. 準備 Spring 專案

若要部署 RESTful API 應用程式,第一個步驟是準備 Spring 專案以在本機執行。

使用下列步驟在本機複製並執行應用程式:

  1. 使用下列命令從 GitHub 複製範例專案:

    git clone https://github.com/Azure-Samples/ASA-Samples-Restful-Application.git
    
  2. 如果您想要在本機執行應用程式,請先完成公開 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 執行個體

使用下列步驟來建立服務實例:

  1. 選取 入口網站角落的 [建立資源 ]。

  2. 選取 [計算>Azure Spring Apps]。

  3. 填寫 [基本] 表單。 使用下表作為完成表單的指南。 建議 的機制 值為 標準耗用量和專用 (預覽版)

    設定 建議的值 描述
    訂用帳戶 您的訂閱名稱。 您想要用於伺服器的 Azure 訂用帳戶。 如果您有多個訂用帳戶,請選擇您想要針對資源計費的訂用帳戶。
    資源群組 myresourcegroup 新的資源組名或您訂用帳戶的現有資源組名。
    名稱 myasa 識別 Azure Spring Apps 服務的唯一名稱。 名稱長度必須介於 4 到 32 個字元之間,而且只能包含小寫字母、數位和連字元。 服務名稱的第一個字元必須是字母,最後一個字元必須是字母或數位。
    計劃 標準耗用量和專用 (預覽) 定價方案會決定與您的實例相關聯的資源和成本。
    區域 最接近用戶的區域。 最接近使用者的位置。
    Container Apps 環境 myenvironment 選項,可選取要與其他服務和資源分享相同虛擬網路的 Container Apps 環境實例。

    使用下表作為容器應用程式環境建立指南:

    設定 建議的值 描述
    環境名稱 myenvironment 識別 Azure Container Apps 環境服務的唯一名稱。
    計劃 耗用 定價方案會決定與您的實例相關聯的資源和成本。
    區域備援 停用 在 Azure 可用性區域中建立 Container Apps 環境服務的選項。
  4. 選取 [ 檢閱] 和 [建立] 以檢閱您的選取專案。 然後,選取 [建立] 以布建 Azure Spring Apps 實例。

  5. 在工具列上,選取 [通知 ] 圖示(鈴鐺),以監視部署程式。 部署完成後,您可以選取 [釘選到儀錶板],這會在 Azure 入口網站 儀錶板上建立此服務的圖格,作為服務的 [概觀] 頁面快捷方式。

  6. 選取 [移至資源 ] 以開啟服務的 [概 ] 頁面。

    Screenshot of the Azure portal that shows the Overview page with the Notifications page open.

重要

取用工作負載配置檔具有隨用隨付計費模型,不需要開始成本。 系統會根據布建的資源,向您收取專用工作負載配置文件的費用。 如需詳細資訊,請參閱 Azure Container Apps 和 Azure Spring Apps 定價中的工作負載配置檔。

3.3. 準備 PostgreSQL 實例

使用下列步驟建立 適用於 PostgreSQL 的 Azure 資料庫 伺服器:

  1. 移至 Azure 入口網站,然後選取 [建立資源]。

  2. 選取 [資料庫> 適用於 PostgreSQL 的 Azure 資料庫。

  3. 選取 [ 彈性伺服器 部署] 選項。

    Screenshot of the Azure portal that shows the Select Azure Database for PostgreSQL deployment option page.

  4. 填寫 [基本] 索引標籤,其中包含下列資訊:

    • 伺服器名稱my-demo-pgsql
    • 區域美國東部
    • PostgreSQL 版本14
    • 工作負載類型開發
    • 啟用高可用性:未選取
    • 驗證方法僅 PostgreSQL 驗證
    • 管理員 用戶名稱myadmin
    • 密碼確認密碼:輸入密碼。
  5. 使用下列資訊來設定 [ 網络] 索引 標籤:

    • 連線 ivity 方法公用存取(允許的 IP 位址)
    • 允許從 Azure 內的任何 Azure 服務公開存取此伺服器:選取
  6. 選取 [ 檢閱 + 建立 ] 以檢閱您的選取專案,然後選取 [ 建立] 以布建伺服器。 這項作業可能需要幾分鐘的時間。

  7. 移至 Azure 入口網站 中的PostgreSQL伺服器。 在 [ 概觀] 頁面上,尋找 [伺服器名稱] 值,然後記錄它以供日後使用。 您需要它來設定 Azure Spring Apps 中應用程式的環境變數。

  8. 從導覽選單中選取 [資料庫 ] 以建立資料庫 , 例如 todo

    Screenshot of the Azure portal that shows the Databases page with the Create Database pane open.

3.4. 將應用程式實例 連線 至 PostgreSQL 實例

使用下列步驟來連線服務實例:

  1. 移至 Azure 入口網站 中的 Azure Spring Apps 實例。

  2. 從導覽功能表中,開啟 [ 應用程式],然後選取 [ 建立應用程式]。

  3. 在 [ 建立應用程式 ] 頁面上,填入應用程式名稱 simple-todo-api ,然後選取 [Java 成品 ] 作為部署類型。

  4. 選取 [建立 ] 以完成應用程式建立,然後選取應用程式以檢視詳細數據。

  5. 移至您在 Azure 入口網站 中建立的應用程式。 在 [概 觀] 頁面上,選取 [ 指派端點 ] 以公開應用程式的公用端點。 儲存 URL 以在部署後存取應用程式。

  6. 移至您建立的應用程式,展開 [設定],然後從導覽功能表中選取 [組態],然後選取 [環境變數] 來設定環境變數。

  7. 為 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>

    Screenshot of the Azure portal that shows the Environment variables tab with all the values for the PostgreSQL connection.

3.5. 公開 RESTful API

使用下列步驟,在 Microsoft Entra 標識符中公開 RESTful API:

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。

  3. 搜尋並選取 [Microsoft Entra ID]

  4. 在 [管理] 底下,選取 [應用程式註冊]> [新增註冊]

  5. 在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 Todo。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。

  6. 針對 支援的帳戶類型,選取 任何組織目錄中的 [帳戶] (任何 Microsoft Entra 目錄 - 多租使用者) 和個人 Microsoft 帳戶

  7. 選取 [暫存器] 以建立應用程式。

  8. 在應用程式 [概觀] 頁面上,尋找 [應用程式] [用戶端] 識別符 值,然後記錄它以供稍後使用。 您需要此項目設定 YAML 組態檔。

  9. 在 [管理] 底下,選取 [公開 API],在頁面開頭尋找 [應用程式標識符 URI],然後選取 [新增]。

  10. 在 [ 編輯應用程式識別碼 URI ] 頁面上,接受建議的應用程式識別碼 URI (api://{client ID}) 或使用有意義的名稱,而不是用戶端識別符,例如 api://simple-todo,然後選取 [ 儲存]。

  11. 在 [管理] 底下,選取 [公開 API>新增範圍],然後輸入下列資訊:

    • 針對 [範圍名稱],輸入 ToDo.Read
    • 為 神秘 可以同意,請只選取 [管理員]。
    • 如需 管理員 同意顯示名稱,請輸入 [讀取 ToDo 數據]。
    • 針對 管理員 同意描述,輸入 [允許已驗證的用戶讀取ToDo數據]。
    • 針對 [狀態],請保持啟用它。
    • 選取新增範圍
  12. 重複上述步驟以新增其他兩個範圍: ToDo.WriteToDo.Delete

    Screenshot of the Azure portal that shows the Expose an API page of a RESTful API application.

3.6. 更新應用程式組態

使用下列步驟來更新 YAML 檔案,以使用 Microsoft Entra 註冊的應用程式資訊來建立與 RESTful API 應用程式的關聯性:

  1. 找出 應用程式的 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 的值包括: commonorganizationsconsumers或租用戶標識碼。 如需這些值的詳細資訊,請參閱 使用錯誤的端點(個人和組織帳戶) 一節錯誤 AADSTS50020 - 來自識別提供者的用戶帳戶不存在於租使用者中。 如需轉換單一租使用者應用程式的資訊,請參閱 在 Microsoft Entra 識別碼上將單一租使用者應用程式轉換成多租使用者。

  2. 使用下列命令重建範例專案:

    ./mvnw clean package
    

4.將應用程式部署至 Azure Spring Apps

您現在可以將應用程式部署至 Azure Spring Apps。

使用下列步驟來部署使用適用於 Azure Spring AppsMaven 外掛程式:

  1. 瀏覽至 完整的 目錄,然後執行下列命令以在 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 檔案中。
  2. 使用下列命令來部署應用程式:

    ./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

  1. 登入 Azure 入口網站

  2. 如果您有多個租使用者的存取權,請使用 [目錄 + 訂 用帳戶篩選條件] 來 選取您要在其中註冊應用程式的租使用者。

  3. 搜尋並選取 [Microsoft Entra ID]

  4. 在 [管理] 底下,選取 [應用程式註冊]> [新增註冊]

  5. 在 [ 名稱 ] 欄位中輸入應用程式的名稱 ,例如 ToDoWeb。 您的應用程式使用者可能會看到此名稱,而且您稍後可以加以變更。

  6. 針對支援的帳戶類型,請僅使用此組織目錄中的 [帳戶] 預設值

  7. 選取 [暫存器] 以建立應用程式。

  8. 在應用程式 [概觀] 頁面上,尋找 [應用程式] [用戶端] 識別符 值,然後記錄它以供稍後使用。 您需要它才能取得存取令牌。

  9. 選取 [API 許可權>][新增許可權>我的 API]。 ToDo選取您稍早註冊的應用程式,然後選取 ToDo.ReadToDo.WriteToDo.Delete 許可權。 選取新增權限

  10. 針對您新增的許可權,選取 [授與管理員同意] 以 <授與您的租用戶名稱> 許可權。

    Screenshot of the Azure portal that shows the API permissions of a web application.

新增使用者以存取 RESTful API

使用下列步驟,在您的 Microsoft Entra 租使用者中建立成員使用者。 然後,用戶可以透過 RESTful API 管理應用程式的數據 ToDo

  1. 在 [管理] 底下,選取 [使用者>] [新增使用者>] [建立新使用者]。

  2. 在 [ 建立新的使用者 ] 頁面上,輸入下列資訊:

    • 用戶主體名稱:輸入用戶的名稱。
    • 顯示名稱:輸入使用者的顯示名稱。
    • 密碼:複製 [密碼] 方塊中提供的自動產生的密碼。

    注意

    新用戶必須完成第一次登入驗證並更新其密碼,否則當您取得存取令牌時收到 AADSTS50055: The password is expired 錯誤。

    當新的使用者登入時,他們會收到 [需要動作] 提示。 他們可以選擇 [ 稍後 詢問] 略過驗證。

  3. 選取 [ 檢閱 + 建立 ] 以檢閱您的選取專案。 選取 [建立 ] 以建立使用者。

更新 Swagger UI 授權的 OAuth2 組態

使用下列步驟來更新 Swagger UI 授權的 OAuth2 組態。 然後,您可以授權使用者透過 ToDoWeb 應用程式取得存取令牌。

  1. 在 Azure 入口網站 中開啟您的 Microsoft Entra ID 租使用者,然後移至已註冊ToDoWeb的應用程式。

  2. 在 [管理] 底下,選取 [驗證],選取 [新增平臺],然後選取 [單頁應用程式]。

  3. 使用格式<your-app-exposed-application-URL-or-endpoint>/swagger-ui/oauth2-redirect.html做為 [重新導向 URI] 字段中的 OAuth2 重新導向 URL,然後選取 [設定]。

    Screenshot of the Azure portal that shows the Authentication page for Microsoft Entra ID.

取得存取令牌

使用下列步驟使用 OAuth 2.0 授權碼流程 方法來取得具有 Microsoft Entra ID 的 ToDo 存取令牌,然後存取應用程式的 RESTful API:

  1. 開啟應用程式公開的 URL,然後選取 [ 授權 ] 以準備 OAuth2 驗證。

  2. 在 [可用的授權] 視窗中,在 [client_id] 字段中輸入應用程式的用戶端標識符ToDoWeb、選取 [範圍] 字段的所有範圍、忽略 [client_secret] 字段,然後選取 [授權] 以重新導向至 Microsoft Entra 登入頁面。

完成與上一個使用者的登入之後,您就會回到 [可用的授權 ] 視窗。

5.2. 存取 RESTful API

使用下列步驟來存取 Swagger UI 中應用程式的 RESTful API ToDo

  1. 選取 API POST /api/simple-todo/lists ,然後選取 [ 試用]。輸入下列要求本文,然後選取 [ 執行 ] 以建立ToDo清單。

    {
      "name": "My List"
    }
    

    執行完成之後,您會看到下列 響應主體

    {
      "id": "<ID-of-the-ToDo-list>",
      "name": "My List",
      "description": null
    }
    
  2. 選取 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
    }
    
  3. 選取 API GET /api/simple-todo/lists ,然後選取 [ 執行 ] 以查詢 ToDo 清單。 此動作會傳回下列 ToDo 清單:

    [
      {
        "id": "<ID-of-the-ToDo-list>",
        "name": "My List",
        "description": null
      }
    ]
    
  4. 選取 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
      }
    ]
    
  5. 選取 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
    }
    
  6. 選取 API DELETE /api/simple-todo/lists/{listId}/items/{itemId} ,然後選取 [ 試用]。針對 listId,輸入 ToDo 清單識別碼。 針對 itemId,輸入 ToDo 專案識別碼,然後選取 [ 執行 ] 以刪除 ToDo 專案。 您應該會看到伺服器回應碼為 204

6.清除資源

您可以刪除 Azure 資源群組,其中包含資源群組中的所有資源。

使用下列步驟來刪除整個資源群組,包括新建立的服務:

  1. 在 Azure 入口網站 中找出您的資源群組。

  2. 在導覽功能表上,選取 [資源群組]。 然後,選取資源群組的名稱,例如 myresourcegroup

  3. 在您的資源群組頁面上,選取 [ 刪除]。 在文本框中輸入資源群組的名稱,以確認刪除 -例如 myresourcegroup。 然後,選取 [ 刪除]。

使用下列步驟來刪除整個資源群組,包括新建立的服務:

  1. 在 Azure 入口網站 中找到您的資源群組。

  2. 在導覽功能表上,選取 [資源群組]。 然後,選取資源群組的名稱,例如 myresourcegroup

  3. 在您的資源群組頁面上,選取 [ 刪除]。 在文本框中輸入資源群組的名稱,以確認刪除 -例如 myresourcegroup。 然後,選取 [ 刪除]。

7. 後續步驟

如需詳細資訊,請參閱下列文章: