新增 Microsoft Entra 帳戶登入功能至 Spring Web 應用程式

本文說明如何開發支援透過 Microsoft Entra 帳戶登入的 Spring Web 應用程式。 完成本文所有步驟後,網頁應用程式在匿名存取時會重新導向至 Microsoft Entra 登入頁面。 下列螢幕快照顯示 Microsoft Entra 登入頁面:

Microsoft Entra Spring 網頁應用程式登入頁面的截圖。

先決條件

若要完成本文中的步驟,您必須符合下列必要條件:

重要

需要 Spring Boot 2.5 版或更高版本,才能完成本文中的步驟。

使用 Spring Initializr 建立應用程式

  1. 瀏覽至 https://start.spring.io/

  2. 指定你想用 Java 產生一個 Maven 專案。 請輸入 群組 名稱與 文物 名稱以申請申請。

  3. 新增 Spring WebOAuth2 用戶端相依性

  4. 在頁面底部,選取 [GENERATE] 按鈕。

  5. 出現提示時,請將專案下載到本機計算機上的路徑。

新增 Microsoft Entra 相依性

  1. 將下載的專案檔案解壓縮到本機電腦上的目錄中。

  2. 在文字編輯器中開啟 pom.xml 檔案。

  3. 將 Spring Cloud Azure 物料清單(BOM)加入該<dependencyManagement>區塊。

    <dependencyManagement>
      <dependencies>
        <dependency>
          <groupId>com.azure.spring</groupId>
          <artifactId>spring-cloud-azure-dependencies</artifactId>
          <version>7.4.0</version>
          <type>pom</type>
          <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>
    
  4. Add the Spring Cloud Azure Starter Microsoft Entra dependency 到 section<dependencies>.

    <dependency>
      <groupId>com.azure.spring</groupId>
      <artifactId>spring-cloud-azure-starter-active-directory</artifactId>
    </dependency>
    
  5. 儲存並關閉 pom.xml 檔案。

建立 Microsoft Entra 執行個體

如果您是現有實例的系統管理員,您可以略過此程式。

  1. 登入 https://portal.azure.com

  2. 選取 所有服務,然後 身分識別,然後 Microsoft Entra ID

  3. 輸入您的 組織名稱初始網域名稱。 複製目錄的完整 URL。 您將在本教學課程稍後使用 URL 來新增使用者帳戶。 (例如:azuresampledirectory.onmicrosoft.com。)

    複製目錄的完整 URL。 您將在本教學課程稍後使用 URL 來新增使用者帳戶。 (例如:azuresampledirectory.onmicrosoft.com。)

    當您完成時,請選擇 建立。 建立新資源需要幾分鐘的時間。

  4. 完成時,選取顯示的連結以存取新目錄。

  5. 複製 租使用者識別碼。 在本教學課程的後續步驟中,您將使用 ID 值來配置 application.properties 檔案。

為您的 Spring Boot 應用程式新增註冊項目

  1. 從入口網站選單中,選取 [應用程式註冊],然後選取 [註冊應用程式

  2. 指定您的應用程式,然後選擇 註冊

  3. 當您的應用程式註冊頁面出現時,請複製您的 應用程式 (用戶端) 識別碼租用戶識別碼。 在這教學後面,請用這些值來設定你的 application.properties 檔案。

  4. 在瀏覽窗格中選取 憑證 & 秘密。 然後,選取 新增客戶端密碼

    應用程式「憑證 & 秘密」的螢幕截圖,其中 [新增客戶端密碼] 已被醒目提示。

  5. 新增 說明,然後在 到期 列表中選擇持續時間。 選取 新增。 該鍵的值會自動被填入。

  6. 複製並儲存客戶端密碼的值,以在本教學課程稍後的 application.properties 檔案中設定。 (此值之後無法取得。)

    醒目提示新用戶端密碼的應用程式螢幕快照。

  7. 從應用程式註冊的主頁面,選取 驗證,然後選取 新增平臺。 然後選擇 Web 應用程式

  8. 針對新的 重新導向 URI,輸入 ,然後選取 [設定]。

  9. 如果你修改了pom.xml 檔案,使用了 3.0.0 之前的Microsoft Entra起始版本:在隱式授權與混合流程中,選擇 ID 標記(用於隱式與混合流程),然後選擇儲存

新增使用者帳號並指派 Microsoft Entra 應用程式角色

  1. 從 Microsoft Entra ID 租用戶的 [ 概觀 ] 頁面中,選取 [使用者],然後選取 [ 新增使用者]。

  2. 顯示 [使用者] 面板時,輸入 [使用者名稱][名稱]。 然後選擇 [建立]。

    新增使用者對話框的截圖,用於建立使用者帳號。

    注意

    當您輸入使用者名稱時,必須指定您在先前步驟中使用的目錄 URL。 例如:

    test-user@azuresampledirectory.onmicrosoft.com

  3. 從你的應用程式註冊主頁,選擇 應用程式角色,然後選擇 建立應用程式角色。 為表單欄位提供數值,選擇 「你想啟用此應用程式角色嗎?」,然後選擇 套用

    [應用程式角色] 畫面的螢幕快照,其中顯示 [建立應用程式角色] 窗格。

  4. 從 Microsoft Entra 目錄的 [概觀] 頁面中,選取 [企業應用程式]。

  5. 選擇 所有應用程式,然後選擇你在前一步新增應用程式角色的應用程式。

  6. 選取 [使用者和群組],然後選取 [新增使用者/群組]

  7. 使用者下,選取 未選取。 選擇你之前建立的使用者,選擇 選擇,然後選擇 指派。 如果您稍早建立了多個應用程式角色,請選取某個角色。

  8. 回到 使用者 面板,選擇你的測試使用者,然後選擇 重設密碼。 複製密碼。 你在這教學後面登入應用程式時會使用密碼。

設定和編譯您的應用程式

  1. 從您稍早在本教學課程中建立和下載的專案封存中擷取檔案到目錄。

  2. 到專案中的 src/main/resources 資料夾,然後在文字編輯器中開啟 application.properties 檔案。

  3. 用你之前建立的數值來指定你的應用程式註冊設定。 例如:

    # Enable related features.
    spring.cloud.azure.active-directory.enabled=true
    # Specifies your Microsoft Entra ID tenant ID:
    spring.cloud.azure.active-directory.profile.tenant-id=<tenant-ID>
    # Specifies your App Registration's Application ID:
    spring.cloud.azure.active-directory.credential.client-id=<client-ID>
    # Specifies your App Registration's secret key:
    spring.cloud.azure.active-directory.credential.client-secret=<client-secret>
    

    哪裡:

    參數 描述
    spring.cloud.azure.active-directory.enabled 啟用 所 spring-cloud-azure-starter-active-directory提供的功能。
    spring.cloud.azure.active-directory.profile.tenant-id 包含您先前的 Microsoft Entra ID 租戶 識別碼
    spring.cloud.azure.active-directory.credential.client-id 包含您先前完成的應用程式註冊中的 應用程式識別碼
    spring.cloud.azure.active-directory.credential.client-secret 包含來自您稍早完成的應用程式註冊金鑰中的
  4. 儲存並關閉 application.properties 檔案。

  5. 在應用程式的 Java 源資料夾中,建立名為 控制器的資料夾。 例如:src/main/java/com/wingtiptoys/security/controller

  6. 控制器 資料夾中建立名為 HelloController.java 的新 Java 檔案,並在文本編輯器中開啟它。

  7. 輸入以下程式碼,然後儲存並關閉檔案:

    package com.wingtiptoys.security;
    
    import org.springframework.web.bind.annotation.GetMapping;
    import org.springframework.web.bind.annotation.ResponseBody;
    import org.springframework.web.bind.annotation.RestController;
    import org.springframework.security.access.prepost.PreAuthorize;
    
    @RestController
    public class HelloController {
         @GetMapping("Admin")
         @ResponseBody
         @PreAuthorize("hasAuthority('APPROLE_Admin')")
         public String Admin() {
             return "Admin message";
         }
    }
    

建置和測試您的應用程式

  1. 開啟命令提示字元,並將目錄變更為應用程式 pom.xml 檔案所在的資料夾。

  2. 使用 Maven 建置 Spring Boot 應用程式並加以執行。 例如:

    mvn clean package
    mvn spring-boot:run
    
  3. Maven 建置並啟動你的應用程式後,請在網頁瀏覽器中開啟 http://localhost:8080/Admin 。 系統會提示你輸入使用者名稱和密碼。

    應用程式 [登入] 對話框的螢幕快照。

    注意

    如果這是新使用者帳號的第一次登入,可能會被要求更改密碼。

    應用程式 [更新密碼] 對話框的螢幕快照。

  4. 成功登入後,你會看到控制器發出的「管理員訊息」範例文字。

    應用程式系統管理員訊息的螢幕快照。

總結

在這個教學中,你透過使用 Microsoft Entra 啟動程式建立一個新的 Java 網頁應用程式,設定一個新的 Microsoft Entra 租戶,在該租戶中註冊一個新應用程式,接著將應用程式設定為使用 Spring 註解和類別來保護網頁應用程式。

另請參閱

後續步驟

若要深入瞭解 Spring 和 Azure,請繼續前往 Azure 上的 Spring 檔中心。