適用於: 勞動力租用者
外部租用者(深入瞭解)
開始之前,請在此頁面頂端使用「選擇租用戶類型」選取器來選擇租用戶類型。 Microsoft Entra ID 提供兩種租戶組態,員工 和 外部。 員工租戶配置適用於您的員工、內部應用程式和其他組織資源。 外部租戶適用於面向客戶的應用程式。
在本快速入門中,您會下載並執行程式碼範例,該範例會示範 Android 應用程式如何登入使用者,並取得存取權杖來呼叫 Microsoft Graph API。
應用程式必須以 Microsoft Entra ID 中的應用程式物件表示,讓 Microsoft 身分識別平台能夠為您的應用程式提供權杖。
先決條件
- 具有有效訂閱的 Azure 帳戶。 如果您還沒有帳戶,免費建立帳戶。
- 此 Azure 帳戶必須具有管理應用程式的權限。 下列任何 Microsoft Entra 角色都包含必要的權限:
- 應用程式管理員
- 應用程式開發人員
- 員工租戶。 您可以使用預設目錄或設定新的租戶。
- 在 Microsoft Entra 系統管理中心註冊新的應用程式,針對 任何組織目錄中的帳戶和個人Microsoft帳戶進行設定。 如需詳細資訊 ,請參閱註冊應用程式 。 從應用程式 [概 觀 ] 頁面記錄下列值,以供稍後使用:
- 應用程式 (用戶端) 識別碼
- 目錄(租戶)識別碼
- Android Studio
- 安卓 16+
新增重新導向 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 組態],以便稍後在設定應用程式時可加以輸入。
選擇 完成。
下載範例應用程式
設定範例應用程式
在 Android Studio 的專案窗格中,瀏覽至 app\src\main\res。
以滑鼠右鍵按下 res,然後選擇 [新增>目錄]。 輸入
raw
作為新的目錄名稱,然後選取 [確定]。在 [app]>[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": false, "account_mode": "SINGLE", "authorities": [ { "type": "AAD", "audience": { "type": "AzureADandPersonalMicrosoftAccount", "tenant_id": "common" } } ] }
開啟 /app/src/main/AndroidManifest.xml 檔案。
尋找占位符:
-
enter_the_signature_hash
並將它取代為在您先前新增平臺重定向 URL 時所產生的 簽章哈希。
-
執行範例應用程式
從 Android Studio 的可用裝置下拉式清單中選取您的模擬器或實體裝置,然後執行應用程式。
範例應用程式會在 [單一帳戶模式] 畫面上啟動。 依預設會提供預設範圍 user.read,這是在 Microsoft Graph API 呼叫期間讀取您自己的設定檔資料時所使用的範圍。 依預設會提供 Microsoft Graph API 呼叫的 URL。 您可以視需要變更這兩項設定。
使用應用程式功能表,在單一和多重帳戶模式之間進行變更。
在單一帳戶模式中,使用工作或主帳戶登入:
- 選取 [以互動方式取得圖形資料],以提示使用者輸入其認證。 您會在畫面底部看到 Microsoft Graph API 呼叫的輸出。
- 登入之後,選取 [以無訊息方式取得圖形資料] 以呼叫 Microsoft Graph API,而不再次提示使用者提供認證。 您會在畫面底部看到 Microsoft Graph API 呼叫的輸出。
在多重帳戶模式中,您可以重複相同的步驟。 此外,您也可以移除已登入的帳戶,這也會同時清除該帳戶的快取憑證。
此範例的運作方式
程式碼會組織成片段,說明如何撰寫單一和多重帳戶 MSAL 應用程式。 程式碼檔案的組織方式如下:
檔案 | 演示 |
---|---|
主要活動 | 管理 UI |
MSGraphRequestWrapper | 使用 MSAL 提供的授權憑證來呼叫 Microsoft Graph API |
多帳號模式片段 | 初始化多重帳戶應用程式、載入使用者帳戶,並取得權杖以呼叫 Microsoft Graph API |
單帳戶模式片段 | 初始化單一帳戶應用程式、載入使用者帳戶,並取得權杖以呼叫 Microsoft Graph API |
res/auth_config_multiple_account.json | 多重帳戶組態檔 |
res/auth_config_single_account.json | 單一帳戶組態檔 |
Gradle Scripts/build.grade(模組:app) | 在此新增 MSAL 程式庫依賴項 |
現在我們將更詳細地探討這些檔案,並指出每個檔案中 MSAL 特有的程式碼。
後續步驟
繼續進行 Android 教學課程,您可以在其中建置 Android 應用程式,從 Microsoft 身分識別平台取得存取權杖,並將其用來呼叫 Microsoft Graph API。
快速入門會引導您設定範例 Android、.NET MAUI Android 和 iOS/macOS 應用程式,藉由註冊應用程式、設定重新導向 URL、更新設定及測試應用程式來登入使用者。
先決條件
- 具有有效訂閱的 Azure 帳戶。 如果您還沒有帳戶,免費建立帳戶。
- 此 Azure 帳戶必須具有管理應用程式的權限。 下列任何 Microsoft Entra 角色都包含必要的權限:
- 應用程式管理員
- 應用程式開發人員
- 外部租戶。 若要建立一個,請從下列方法中選擇:
- 使用 Microsoft Entra External ID 擴充功能 直接在 Visual Studio Code 中設定外部租戶。 (建議使用)
- 在 Microsoft Entra 管理中心中建立新的外部租戶。
- 在 Microsoft Entra 系統管理中心註冊新的應用程式, 僅針對此組織目錄中的帳戶進行設定。 如需詳細資訊 ,請參閱註冊應用程式 。 從應用程式 [概 觀 ] 頁面記錄下列值,以供稍後使用:
- 應用程式 (用戶端) 識別碼
- 目錄(租戶)識別碼
新增平臺重定向 URL
您必須在應用程式註冊中設定特定的重新導向 URI,以確保與下載的程式碼範例相容。 在使用者成功登入之後,這些 URI 對於將使用者重新導向回應用程式至關重要。
若要在應用程式註冊中指定您的應用程式類型,請遵循下列步驟:
- 在 [管理] 底下,選取 [驗證]。
- 在 [平台設定] 頁面中,選取 [新增平台],然後選取 [Android] 選項。
- 輸入您專案的套件名稱。 若已下載範例程式碼,則此值為
com.azuresamples.msaldelegatedandroidkotlinsampleapp
。 - 在 [設定 Android 應用程式] 窗格的 [簽章雜湊] 區段中,選取 [產生開發簽章雜湊。這將隨著每個開發環境而變更]。在終端機中複製並執行適用於作業系統的 KeyTool 命令。
- 輸入 KeyTool 所產生的簽章雜湊。
- 選取[],然後設定[]。
- 從 [Android 設定] 窗格複製 [MSAL 設定] 並儲存,以供稍後的應用程式組態使用。
- 選擇 完成。
啟用公開客戶端流程
若要將您的應用程式識別為公用用戶端,請遵循下列步驟:
在 [管理] 底下,選取 [驗證]。
在 [進階設定] 下方的 [允許公用用戶端流程],選取 [是]。
選取儲存以儲存變更。
複製應用程式範例
若要取得範例應用程式,您可以從 GitHub 複製它,或 將它下載為 .zip 檔案。
若要複製範例,請開啟命令提示字元並流覽至您想要建立專案的位置,然後輸入下列命令:
git clone https://github.com/Azure-Samples/ms-identity-ciam-browser-delegated-android-sample
設定範例應用程式
若要啟用驗證和存取 Microsoft Graph 資源,請遵循下列步驟來設定範例:
在 Android Studio 中,開啟您複製的專案。
開啟 /app/src/main/res/raw/auth_config_ciam.json 檔案。
尋找占位符:
-
Enter_the_Application_Id_Here
,然後用您稍早註冊的應用程式的 應用程式(用戶端)ID 取代它。 -
Enter_the_Redirect_Uri_Here
,並使用您稍早加入平台重定向 URL 時所下載的 Microsoft 驗證庫 (MSAL) 組態檔中的 redirect_uri 值來取代它。 -
Enter_the_Tenant_Subdomain_Here
,並將它取代為 Directory (tenant) 子域。 例如,如果您的租戶主要網域為contoso.onmicrosoft.com
,則請使用contoso
。 如果您不知道租戶子網域,請瞭解如何 查看租戶的詳細資訊。
-
開啟 /app/src/main/AndroidManifest.xml 檔案。
尋找占位符:
-
ENTER_YOUR_SIGNATURE_HASH_HERE
並將它取代為在您先前新增平臺重定向 URL 時所產生的 簽章哈希。
-
開啟 /app/src/main/java/com/azuresamples/msaldelegatedandroidkotlinsampleapp/MainActivity.kt 檔案。
尋找名為
scopes
的屬性,並設定 授與管理員同意中所記錄的範圍。 如果您尚未記錄任何範圍,您可以將此範圍清單保留空白。private const val scopes = "" // Developers should set the respective scopes of their Microsoft Graph resources here. For example, private const val scopes = "api://{clientId}/{ToDoList.Read} api://{clientId}/{ToDoList.ReadWrite}"
您已設定應用程式,並準備好執行。
執行及測試範例應用程式
若要建置並執行您的應用程式,請遵循下列步驟:
在工具列中,從 [執行組態] 功能選取您的應用程式。
在目標裝置功能表中,選取您要執行應用程式的裝置。
如果您沒有設定任何裝置,您必須建立 Android 虛擬設備以使用 Android 模擬器或連線實體 Android 裝置。
選取 執行 按鈕。
選取 [以互動方式取得令牌 ] 以要求存取令牌。
如果您選取 [API - 執行 GET ] 來呼叫受保護的 ASP.NET Core Web API,您將會收到錯誤。
如需呼叫受保護 Web API 的詳細資訊,請參閱 後續步驟