分享方式:


使用原生驗證在範例 Android (Kotlin) 行動裝置應用程式中登入使用者

本指南示範如何使用 Entra 的 原生驗證來執行 Android 範例應用程式,示範註冊、登入、註銷和密碼重設 Microsoft案例。

在本文中,您將學會如何:

  • 在外部租用戶中註冊應用程式。
  • 啟用公用用戶端和原生驗證流程。
  • 在外部租使用者中建立使用者流程。
  • 將您的應用程式與使用者流程產生關聯。
  • 更新 Android 組態程式代碼範例檔案,以針對外部租使用者詳細數據使用您自己的 Microsoft Entra 外部 ID。
  • 執行並測試範例原生 Android 行動應用程式。

必要條件

註冊應用程式

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

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

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

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

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

  4. 選取 + 新增註冊

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

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

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

啟用公用用戶端和原生驗證流程

若要指定此應用程式是公用用戶端,而且可以使用原生驗證,請啟用公用用戶端和原生驗證流程:

  1. 從 [應用程式註冊] 頁面中,選取您要啟用公用用戶端和原生驗證流程的應用程式註冊。
  2. 在 [管理] 底下,選取 [驗證]
  3. 在 [進階設定] 下,允許公用用戶端流程:
    1. 針對 [ 啟用下列行動裝置和桌面流程 ] 選取 [ ]。
    2. 針對 [ 啟用原生驗證],選取 [ ]。
  4. 選取 [儲存] 按鈕。
  1. 從 [應用程式註冊] 頁面中,選取您建立的應用程式(例如 ciam-client-app),以開啟其 [概] 頁面。

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

    1. 選取 [授與租用戶名稱>的<管理員同意],然後選取 []。
    2. 選取 [重新整理],然後確認 [為租用戶名稱>授與] <出現在這兩個範圍的 [狀態] 底下

建立使用者流程

請遵循下列步驟來建立使用者流程。

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

  2. 如果您有多個租使用者的存取權,請務必使用包含外部租用戶的目錄:

    1. 選取 工具列中的 [目錄 + 訂用帳戶 ] 圖示。
    2. 在入口 網站設定 |[目錄 + 訂 用帳戶] 頁面,在 [ 目錄名稱 ] 列表中尋找您的外部租用戶目錄,然後選取 [ 切換]。
  3. 在提要欄功能表上,選取 [ 身分識別]。

  4. 選取 [外部身分識別>使用者流程]。

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

  6. 在 [ 建立] 頁面上:

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

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

    3. 在 [電子郵件帳戶] 底下,您可以選取兩個選項之一。 在本教學課程中,選取 [ 電子郵件一次性密碼]。

      • 具有密碼的電子郵件:可讓新使用者使用電子郵件地址作為登入名稱和密碼作為其第一個因素認證來註冊和登入。
      • 電子郵件一次性密碼:可讓新使用者使用電子郵件地址作為登入名稱和電子郵件一次性密碼作為其第一個因素認證來註冊和登入。 若要在使用者流程層級使用此選項,請確定您在租用戶層級啟用電子郵件一次性密碼 (OTP)(選取 [所有識別提供者],然後針對 [電子郵件一次性密碼 ] 選取 [已設定],選取 [是 ] 選項,然後選取 [ 儲存]。
    4. [用戶屬性] 底下,您可以選擇註冊時要向使用者收集的屬性。 針對本指南,選取 [國家/地區城市]。

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

將應用程式與使用者流程產生關聯

雖然許多應用程式可以與您的使用者流程相關聯,但單一應用程式只能與一個使用者流程相關聯。 使用者流程允許針對特定應用程式設定用戶體驗。 例如,您可以設定使用者流程,要求使用者登入或註冊電子郵件位址。

  1. 在提要欄功能表上,選取 [ 身分識別]。

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

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

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

  5. 選取新增應用程式

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

  7. 選擇選取

複製範例 Android 行動應用程式

  1. 開啟 [終端機],然後流覽至您要保留程式代碼的目錄。

  2. 執行下列命令,從 GitHub 複製應用程式:

    git clone https://github.com/Azure-Samples/ms-identity-ciam-native-auth-android-sample 
    

設定範例 Android 行動應用程式

  1. 在 Android Studio 中,開啟您複製的專案。

  2. 開啟 app/src/main/res/raw/native_auth_sample_app_config.json 檔案。

  3. 尋找佔位元:

    • Enter_the_Application_Id_Here 並將它取代為您 稍早註冊之應用程式的應用程式(用戶端)標識碼
    • Enter_the_Tenant_Subdomain_Here 並將它取代為 Directory (tenant) 子域。 例如,如果您的租使用者主要網域是 contoso.onmicrosoft.com,請使用 contoso。 如果您不知道租用戶子域,請瞭解如何 閱讀租使用者詳細數據

您現在已設定應用程式,且已準備好執行。

執行及測試範例 Android 行動應用程式

若要建置並執行您的應用程式,請遵循下列步驟:

  1. 在工具列中,從 [執行組態] 功能選取您的應用程式。

  2. 在目標裝置功能表中,選取您要執行應用程式的裝置。

    如果您沒有設定任何裝置,您必須建立 Android 虛擬設備以使用 Android 模擬器或連線實體 Android 裝置。

  3. 選取 [執行] 按鈕。 應用程式會開啟 電子郵件和 OTP 畫面。

    使用者提示在 Android 應用程式中輸入電子郵件的螢幕快照。

  4. 輸入有效的電子郵件地址,然後選取 [ 註冊] 按鈕。 應用程式會開啟送出程式代碼畫面,並在電子郵件位址中收到 OTP 程式代碼。

    使用者提示在Android應用程式中輸入單次密碼的螢幕快照。

  5. 輸入您在電子郵件收件匣中收到的 OTP 代碼,然後選取 [ 下一步]。 如果註冊成功,應用程式會自動登入。 如果您未在電子郵件收件匣中收到 OTP 程式代碼,您可以選取 [重新傳送密碼] 來重新傳送一段時間。

    顯示已在Android應用程式中順利完成登入的螢幕快照。

  6. 若要登出,請選取 [登出] 按鈕。

此範例支援的其他案例

這個範例應用程式也支援下列驗證流程:

  • 電子郵件 + 密碼 涵蓋使用具有密碼的電子郵件登入或註冊流程。
  • 使用使用者屬性 的電子郵件 + 密碼註冊涵蓋使用電子郵件和密碼註冊,以及提交用戶屬性。
  • 密碼重設 涵蓋自助式密碼重設 (SSPR)。
  • 存取受保護的 API 涵蓋在使用者成功註冊或登入並取得存取令牌之後呼叫受保護的 API。
  • 後援網頁瀏覽器 涵蓋當使用者因任何原因無法透過原生驗證完成驗證時,使用瀏覽器型驗證作為後援機制。

使用密碼流程測試電子郵件

在本節中,您會使用密碼流程測試電子郵件,其變體如下:使用使用者屬性和 SSPR 註冊密碼的電子郵件:

  1. 使用建立使用者流程中的 步驟來建立新的使用者流程 ,但這次選取 [以密碼 傳送電子郵件] 作為驗證方法。 您必須將國家/地區城市設定為用戶屬性。 或者,您可以修改現有的使用者流程以使用具有密碼的電子郵件(選取外部身分識別>使用者流程>SignInSignUpSample>識別提供者>電子郵件與密碼>儲存)。

  2. 使用將應用程式與新使用者流程建立關聯的步驟,將應用程式新增至新的使用者流程。

  3. 執行範例應用程式,然後選取省略號功能表 (...) 以開啟更多選項。

  4. 選取您想要測試的案例,例如 電子郵件 + 密碼電子郵件 + 密碼註冊與使用者屬性密碼重設,然後遵循提示。 若要測試 密碼重設,您必須先註冊使用者,併為 租使用者中的所有使用者啟用電子郵件一次性密碼

測試呼叫受保護的 API 流程

使用範例 Android 行動應用程式中呼叫受保護 Web API 中的 步驟,方法是使用原生驗證 從範例 Android 行動應用程式呼叫受保護的 Web API。

下一步