分享方式:


在外部租用戶中將使用者登入範例 ASP.NET Core Web 應用程式

本操作指南使用範例 ASP.NET Core Web 應用程式來顯示使用適用於 .NET 的 Microsoft 驗證程式庫和適用於 ASP.NET Core 的 Microsoft Identity Web 處理驗證的新式驗證基本概念。

在本文中,您會在 Microsoft Entra 系統管理中心註冊 Web 應用程式,並建立登入和登出使用者流程。 您將使用您自己的外部租用戶詳細資料,將 Web 應用程式與使用者流程建立關聯、下載並更新範例 ASP.NET Core Web 應用程式。 最後,您將會執行並測試範例 Web 應用程式。

必要條件

  • 雖然可以使用任何支援 ASP.NET Core 應用程式的 IDE,但我們在本指南中使用 Visual Studio Code。 您可以從下載頁面下載 Visual Studio Code。
  • .NET 7.0 SDK
  • 一個外部租用戶。 如果您還沒有租用戶,請註冊取得免費試用

註冊 Web 應用程式

若要讓應用程式能夠使用 Microsoft Entra 將使用者登入,Microsoft Entra 外部 ID 必須能夠感知您建立的應用程式。 應用程式註冊會在應用程式與 Microsoft Entra 之間建立信任關係。 註冊應用程式時,外部 ID 會產生稱為「應用程式 (用戶端) 識別碼」的唯一識別碼,這個值可在建立驗證要求時用來識別您的應用程式。

下列步驟顯示如何在 Microsoft Entra 系統管理中心內註冊您的應用程式:

  1. 至少以應用程式開發人員的身分登入 Microsoft Entra 系統管理中心

  2. 如果您有權存取多個租用戶,請使用頂端功能表中的 [設定] 圖示 ,以從 [目錄 + 訂用帳戶] 功能表切換至您的外部租用戶。

  3. 瀏覽至 [身分識別] > [應用程式] > [應用程式註冊]

  4. 選取 + 新增註冊

  5. 在出現的 [註冊應用程式] 頁面中;

    1. 輸入要向應用程式使用者顯示的有意義應用程式「名稱」,例如 ciam-client-app
    2. 在 [支援的帳戶類型] 底下,選取 [僅在此組織目錄中的帳戶]
  6. 選取註冊

  7. 應用程式的 [概觀] 窗格會在成功註冊時顯示。 記錄 [應用程式 (用戶端) 識別碼],以用於您的應用程式原始程式碼。

定義平台和 URL

若要在應用程式註冊中指定您的應用程式類型,請遵循下列步驟:

  1. 在 [管理] 底下,選取 [驗證]
  2. 在 [平台設定] 頁面上,選取 [新增平台],然後選取 [Web] 選項。
  3. 針對 [重新導向 URI] 輸入 https://localhost:7274/signin-oidc
  4. 在 [前端通道登出 URL] 下,輸入 https://localhost:7274/signout-callback-oidc 以進行登出。
  5. 選取 [設定] 以儲存您的變更。

啟用隱含和混合式流程

您建置的應用程式會使用需要啟用的隱含流程。

  1. 在 [隱含授與及混合式流程] 區段中,選取 [識別碼權杖] 核取方塊。
  2. 選取 [儲存]。

新增應用程式用戶端密碼

為已註冊的應用程式建立用戶端密碼。 在要求權杖時,應用程式會使用用戶端密碼來證明其身分識別。

  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式 (例如 ciam-client-app),以開啟其 [概觀] 頁面。
  2. 在 [管理] 下,選取 [憑證和密碼]
  3. 選取 [新用戶端密碼]
  4. 在 [描述] 方塊中,輸入用戶端密碼的描述 (例如「ciam 應用程式用戶端密碼」)。
  5. 在 [到期] 下方,選取祕密有效的持續時間 (根據組織的安全性規則),然後選取 [新增]
  6. 記錄祕密的 [值]。 您將會在稍後的步驟中使用此值進行設定。 在您離開 [憑證和祕密] 之後,祕密值將不會再次顯示,而且無法透過任何方式擷取。 請務必妥善加以記錄。
  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式 (例如 ciam-client-app),以開啟其 [概觀] 頁面。

  2. 「管理」下方選取 [API 權限]。 從 [已設定權限] 清單中,您的應用程式已獲指派 User.Read 權限。 不過,因為租用戶是外部租用戶,所以取用者使用者本身無法同意此權限。 身為管理員的您必須代表租用戶中的所有使用者同意此權限:

    1. 選取 [代表 <您的租用戶名稱> 授與管理員同意],然後選取 [是]
    2. 選取 [重新整理],然後驗證 [已授與 <您的租用戶名稱>] 是否出現在這兩個範圍的 [狀態] 下方。

建立使用者流程

請遵循下列步驟來建立客戶可用來登入或註冊應用程式的使用者流程。

  1. 至少以外部 ID 使用者流程管理員的身分登入 Microsoft Entra 系統管理中心

  2. 如果您有權存取多個租用戶,請使用頂端功能表中的 [設定] 圖示 ,以從 [目錄 + 訂用帳戶] 功能表切換至您的外部租用戶。

  3. 瀏覽至 [身分識別] > [外部身分識別] > [使用者流程]

  4. 選取 [+ 新增使用者流程]

  5. 在 [建立] 頁面上:

    1. 輸入使用者流程的 [名稱],例如 SignInSignUpSample

    2. 在 [識別提供者] 清單中,選取 [電子郵件帳戶]。 此識別提供者可讓使用者使用其電子郵件地址來登入或註冊。

      注意

      其他識別提供者只會在您設定與其的同盟之後,才會在這裡列出。 例如,若設定與 GoogleFacebook 的同盟,則可在此處選取這些其他識別提供者。

    3. 在 [電子郵件帳戶] 下方,您可以選取兩個選項中的其中一個。 在本教學課程中,選取 [電子郵件和密碼]

      • 電子郵件和密碼:可讓新使用者使用電子郵件地址作為登入名稱,並使用密碼作為其第一個要素認證來註冊和登入。
      • 電子郵件一次性密碼:可讓新使用者使用電子郵件地址作為登入名稱,並使用電子郵件一次性密碼作為其第一個要素認證來註冊和登入。 電子郵件一次性密碼必須在租用戶層級啟用 ([所有識別提供者] > [電子郵件一次性密碼]),此選項才能在使用者流程層級使用。
    4. 在 [使用者屬性] 下方,選擇您想要在註冊時向使用者收集的屬性。 選取 [顯示更多],即可選擇 [國家/地區]、[顯示名稱] 和 [郵遞區號] 的屬性和宣告。 選取 [確定]。 (只有在使用者第一次註冊時,才會提示使用者輸入屬性。)

  6. 選取 建立。 新的使用者流程會出現在 [使用者流程] 清單中。 如有需要,請重新整理頁面。

若要啟用自助式密碼重設,請使用啟用自助式密碼重設一文中的步驟。

將 Web 應用程式與使用者流程建立關聯

若要讓客戶使用者在使用您的應用程式時看到註冊或登入體驗,您必須將您的應用程式與使用者流程關聯起來。 雖然許多應用程式可以與您的使用者流程產生關聯,但單一應用程式只能與一個使用者流程產生關聯。

  1. 在側邊欄功能表上,選取 [身分識別]

  2. 選取 [外部身分識別],然後選取 [使用者流程]

  3. 在 [使用者流程] 頁面中,選取您稍早建立的 [使用者流程名稱],例如 SignInSignUpSample

  4. 在 [使用] 下方,選取 [應用程式]

  5. 選取新增應用程式

  6. 從清單中選取應用程式 (例如 ciam-client-app),或使用搜尋方塊來尋找應用程式並選取。

  7. 選擇選取

將應用程式與使用者流程關聯後,您即可從 Microsoft Entra 系統管理中心使用您的應用程式模擬使用者的註冊或登入體驗,以測試您的使用者流程。 若要這麼做,請使用測試註冊和登入使用者流程中的步驟。

複製或下載範例 Web 應用程式

若要取得應用程式範例,您可以從 GitHub 加以複製,或將其下載為 .zip 檔案。

  • 若要複製範例,請開啟命令提示字元,並瀏覽至您想要建立專案的位置,然後輸入下列命令:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-dotnet-tutorial.git
    
  • 下載 .zip 檔案 (英文)。 將其解壓縮到名稱長度少於 260 個字元的檔案路徑。

設定應用程式

  1. 瀏覽至您下載之範例的根資料夾,以及包含 ASP.NET Core 範例應用程式的目錄:

    cd 1-Authentication\1-sign-in-aspnet-core-mvc
    
  2. 開啟 appsettings.json 檔案。

  3. 在 [授權單位] 中,尋找 Enter_the_Tenant_Subdomain_Here 並將其取代為您租用戶的子網域。 例如,如果您的租用戶主要網域是 caseyjensen@onmicrosoft.com,則您應該輸入的值是 casyjensen

  4. 尋找 Enter_the_Application_Id_Here 值,並將其取代為您在 Microsoft Entra 系統管理中心所註冊應用程式的應用程式識別碼 (clientId)。

  5. Enter_the_Client_Secret_Here 取代為您在 [新增應用程式用戶端密碼] 中設定的客戶端密碼值。

執行程式碼範例

  1. 從殼層或命令列,執行下列命令:

    dotnet run
    
  2. 開啟網頁瀏覽器並巡覽至 https://localhost:7274

  3. 使用向外部租用戶註冊的帳戶登入。

  4. 登入之後,顯示名稱會顯示在 [登出] 按鈕旁邊,如下列螢幕擷取畫面所示。

    登入 ASP.NET Core Web 應用程式的螢幕擷取畫面。

  5. 若要從應用程式登出,請選取 [登出] 按鈕。

另請參閱