適用於:
員工租戶
外部租戶 (深入瞭解)
在本教學課程中,您會如何將適用於Android的 Microsoft驗證連結庫 (MSAL) 新增至 Android 應用程式。 MSAL 可讓 Android 應用程式使用 Microsoft Entra 來驗證使用者。
在本教學課程中,您將;
- 新增 MSAL 相依性
- 新增組態
- 建立 MSAL SDK 實例
先決條件
- 員工租戶。 您可以使用 預設目錄 或設定新的租戶。
- 在 Microsoft Entra 系統管理中心註冊新的應用程式, 僅針對此組織目錄中的帳戶進行設定。 如需詳細資訊 ,請參閱註冊應用程式 。 從應用程式 [概 觀 ] 頁面記錄下列值,以供稍後使用:
- 應用程式 (用戶端) 識別碼
- 目錄(租戶)識別碼
- Android 專案。 如果您沒有Android專案,請加以建立。
新增重定向 URI
您必須在應用程式註冊中設定特定的重新導向 URI,以確保與下載的程式碼範例相容。 在使用者成功登入之後,這些 URI 對於將使用者重新導向回應用程式至關重要。
在 [管理] 底下,選取 [驗證]>[新增平台]>[Android]。
根據您下載的範例類型,輸入您的專案的套件名稱。
- JAVA 範例-
com.azuresamples.msalandroidapp - Kotlin 範例 -
com.azuresamples.msalandroidkotlinapp
- JAVA 範例-
在 [設定您的 Android 應用程式] 頁面的 [簽章雜湊] 區段中,選取 [產生開發簽章雜湊。],然後將 KeyTool 命令複製到命令列。
- KeyTool.exe 會安裝為 Java 開發套件 (JDK) 的一部分。 您也必須安裝 OpenSSL 工具來執行 KeyTool 命令。 如需詳細資訊,請參閱關於產生金鑰的 Android 文件。
請輸入由 KeyTool 產生的簽章雜湊。
選取 [設定] 並儲存出現在 [Android 組態] 窗格中的 [MSAL 組態],以便稍後在設定應用程式時可加以輸入。
選擇 完成。
將 MSAL 相依性和相關的連結庫新增至您的專案
若要在Android專案中新增 MSAL 相依性,請遵循下列步驟:
在 Android Studio 中開啟您的專案,或建立新的專案。
開啟應用程式的
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 版的實作,以及其他可能的相依性。在 Android Studio 中,選取 檔案>與 Gradle 文件同步專案。
新增組態
您可以透過 JSON 組態設定,將所需的租使用者識別碼,例如應用程式(用戶端)標識碼傳遞至 MSAL SDK。
使用下列步驟來建立組態檔:
在 Android Studio 的專案窗格中,流覽至 app\src\main\res。
以滑鼠右鍵按下 res,然後選擇 [新增>目錄]。 輸入
raw作為新的目錄名稱,然後選取 [確定]。在 應用程式中的>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" } } ] }我們建議使用 『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 語句。