共用方式為


教學課程:使用Microsoft身分識別平台設定Android應用程式以登入使用者

適用於帶有白色核取記號符號的綠色圓圈,表示以下內容適用於員工租戶。 員工租戶 帶有白色核取記號符號的綠色圓圈,表示以下內容適用於外部租戶。 外部租戶 (深入瞭解

在本教學課程中,您會如何將適用於Android的 Microsoft驗證連結庫 (MSAL) 新增至 Android 應用程式。 MSAL 可讓 Android 應用程式使用 Microsoft Entra 來驗證使用者。

在本教學課程中,您將;

  • 新增 MSAL 相依性
  • 新增組態
  • 建立 MSAL SDK 實例

先決條件

  • 員工租戶。 您可以使用 預設目錄 或設定新的租戶。
  • Microsoft Entra 系統管理中心註冊新的應用程式, 僅針對此組織目錄中的帳戶進行設定。 如需詳細資訊 ,請參閱註冊應用程式 。 從應用程式 [概 ] 頁面記錄下列值,以供稍後使用:
    • 應用程式 (用戶端) 識別碼
    • 目錄(租戶)識別碼
  • Android 專案。 如果您沒有Android專案,請加以建立。

新增重定向 URI

您必須在應用程式註冊中設定特定的重新導向 URI,以確保與下載的程式碼範例相容。 在使用者成功登入之後,這些 URI 對於將使用者重新導向回應用程式至關重要。

  1. 在 [管理] 底下,選取 [驗證]>[新增平台]>[Android]

  2. 根據您下載的範例類型,輸入您的專案的套件名稱。

    • JAVA 範例- com.azuresamples.msalandroidapp
    • Kotlin 範例 - com.azuresamples.msalandroidkotlinapp
  3. 在 [設定您的 Android 應用程式] 頁面的 [簽章雜湊] 區段中,選取 [產生開發簽章雜湊。],然後將 KeyTool 命令複製到命令列。

    • KeyTool.exe 會安裝為 Java 開發套件 (JDK) 的一部分。 您也必須安裝 OpenSSL 工具來執行 KeyTool 命令。 如需詳細資訊,請參閱關於產生金鑰的 Android 文件
  4. 請輸入由 KeyTool 產生的簽章雜湊

  5. 選取 [設定] 並儲存出現在 [Android 組態] 窗格中的 [MSAL 組態],以便稍後在設定應用程式時可加以輸入。

  6. 選擇 完成

將 MSAL 相依性和相關的連結庫新增至您的專案

若要在Android專案中新增 MSAL 相依性,請遵循下列步驟:

  1. 在 Android Studio 中開啟您的專案,或建立新的專案。

  2. 開啟應用程式的 build.gradle,並新增下列相依性:

    allprojects {
    repositories {
        //Needed for com.microsoft.device.display:display-mask library
        maven {
            url 'https://pkgs.dev.azure.com/MicrosoftDeviceSDK/DuoSDK-Public/_packaging/Duo-SDK-Feed/maven/v1'
            name 'Duo-SDK-Feed'
        }
        mavenCentral()
        google()
        }
    }
    //...
    
    dependencies { 
        implementation 'com.microsoft.identity.client:msal:5.+'
        //...
    }
    

    build.gradle 組態中,會針對專案相依性定義存放庫。 這包括來自 Azure DevOps 的 com.microsoft.device.display:display-mask 函式庫的 Maven 存放庫 URL。 此外,它會使用 Maven Central 和 Google 存放庫。 相依性區段會指明 MSAL 第 5 版的實作,以及其他可能的相依性。

  3. 在 Android Studio 中,選取 檔案>與 Gradle 文件同步專案

新增組態

您可以透過 JSON 組態設定,將所需的租使用者識別碼,例如應用程式(用戶端)標識碼傳遞至 MSAL SDK。

使用下列步驟來建立組態檔:

  1. 在 Android Studio 的專案窗格中,流覽至 app\src\main\res

  2. 以滑鼠右鍵按下 res,然後選擇 [新增>目錄]。 輸入 raw 作為新的目錄名稱,然後選取 [確定]

  3. 應用程式中的>src>main>res>raw目錄下,建立名為 auth_config_single_account.json 的新 JSON 檔案,並貼上您稍早儲存的 MSAL 配置。

    在重新導向 URI 下方貼上:

      "account_mode" : "SINGLE",
    

    您的組態檔應該類似下列範例:

    {
      "client_id": "00001111-aaaa-bbbb-3333-cccc4444",
      "authorization_user_agent": "WEBVIEW",
      "redirect_uri": "msauth://com.azuresamples.msalandroidapp/00001111%cccc4444%3D",
      "broker_redirect_uri_registered": true,
      "account_mode": "SINGLE",
      "authorities": [
        {
          "type": "AAD",
          "audience": {
            "type": "AzureADandPersonalMicrosoftAccount",
            "tenant_id": "common"
          }
        }
      ]
    }
    

    本教學課程僅示範如何在單一帳戶模式中設定應用程式,如需詳細資訊,請參閱 單一與多個帳戶模式設定應用程式

  4. 我們建議使用 『WEBVIEW』。 如果您想要在應用程式中將 「authorization_user_agent」 設定為 『BROWSER』,您需要進行下列更新。 a)將 auth_config_single_account.json 更新為「authorization_user_agent」:「Browser」。 b) 更新 AndroidManifest.xml。 在應用程式中,移至 app>src>main>AndroidManifest.xml,將 BrowserTabActivity 活動新增為 <application> 項目的子系。 此項目可讓Microsoft Entra ID 在完成驗證之後回呼您的應用程式:

    <!--Intent filter to capture System Browser or Authenticator calling back to our app after sign-in-->
    <activity
        android:name="com.microsoft.identity.client.BrowserTabActivity"
        android:exported="true">
        <intent-filter>
            <action android:name="android.intent.action.VIEW" />
            <category android:name="android.intent.category.DEFAULT" />
            <category android:name="android.intent.category.BROWSABLE" />
            <data android:scheme="msauth"
                android:host="Enter_the_Package_Name"
                android:path="/Enter_the_Signature_Hash" />
        </intent-filter>
    </activity>
    
    • 使用 套件名稱 來取代 android:host=. 值。 應該是 com.azuresamples.msalandroidapp
    • 使用 簽章哈希 來取代 android:path= 值。 請確定簽章哈希開頭有前置 /。 應該是 /aB1cD2eF3gH4+iJ5kL6-mN7oP8q=

    您也可以在應用程式註冊的驗證面板中找到這些值。

建立 MSAL SDK 實例

若要初始化 MSAL SDK 實例,請使用下列程式代碼:

PublicClientApplication.createSingleAccountPublicClientApplication(
    getContext(),
    R.raw.auth_config_single_account,
    new IPublicClientApplication.ISingleAccountApplicationCreatedListener() {
        @Override
        public void onCreated(ISingleAccountPublicClientApplication application) {
            // Initialize the single account application instance
            mSingleAccountApp = application;
            loadAccount();
        }

        @Override
        public void onError(MsalException exception) {
            // Handle any errors that occur during initialization
            displayError(exception);
        }
    }
);

此程式代碼會使用組態檔 auth_config_single_account.json建立單一帳戶公用用戶端應用程式。 成功建立應用程式時,它會將實例指派給 mSingleAccountApp,並呼叫 loadAccount() 方法。 如果在建立期間發生錯誤,它會呼叫 displayError(exception) 方法來處理錯誤。

請確定您包含匯入陳述式。 Android Studio 應該會自動為你包含 import 語句。

後續步驟