這很重要
自 2025 年 5 月 1 日起,Azure AD B2C 將不再可供新客戶購買。 在我們的常見問題中深入瞭解。
本文說明如何為您的 Android 應用程式啟用、自定義及增強 Azure Active Directory B2C(Azure AD B2C) 驗證體驗。
開始之前,請先熟悉下列文章:
使用自訂網域
藉由使用 自定義網域,您可以完全將驗證 URL 品牌化。 從使用者的角度來看,使用者在驗證過程中會停留在您的網域上,而不會被重新導向至 Azure AD B2C b2clogin.com 網域名稱。
若要完全移除 URL 中對「b2c」的所有提及,您也可以將驗證請求 URL 中的 B2C 租使用者名稱 contoso.onmicrosoft.com 取代為您的租使用者 ID GUID。 例如,您可以變更 https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ 變更為 https://account.contosobank.co.uk/<tenant ID GUID>/。
若要在驗證 URL 中使用自訂網域和租使用者識別碼,請遵循 啟用自定義網域中的指引。 尋找您的Microsoft驗證連結庫 (MSAL 組態對象,然後使用您的自定義功能變數名稱和租使用者標識碼更新 授權單位 。
下列 Kotlin 程式代碼會在變更之前顯示 MSAL config 物件:
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.fromAuthority("https://contoso.b2clogin.com/fabrikamb2c.contoso.com/B2C_1_susi")
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
下列 Kotlin 程式代碼會在變更之後顯示 MSAL config 物件:
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.fromAuthority("https://custom.domain.com/00000000-0000-0000-0000-000000000000/B2C_1_susi")
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
預先填入登入名稱
在登入使用者旅程圖期間,您的應用程式可能會以特定用戶為目標。 當應用程式以用戶為目標時,可以在授權要求 login_hint 中指定具有使用者登入名稱的查詢參數。 Azure AD B2C 會自動填入登入名稱,而且使用者只需要提供密碼。
若要預填登入名稱,請執行以下步驟:
- 如果您使用自定義原則,請新增必要的輸入宣告,如 設定直接登入中所述。
- 尋找您的 MSAL 組態物件,然後使用登入提示新增
withLoginHint()方法。
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withLoginHint("bob@contoso.com")
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
預先選取識別提供者
如果您將應用程式的登入旅程設定為包含社交帳戶,例如 Facebook、LinkedIn 或 Google,您可以指定 domain_hint 參數。 此查詢參數會針對應該用於登入的社交識別提供者,提供 Azure AD B2C 的提示。 例如,如果應用程式指定 domain_hint=facebook.com,則登入流程會直接移至 Facebook 登入頁面。
若要將使用者重新導向至外部識別提供者,請執行下列動作:
- 檢查您的外部身份提供者的網域名稱。 如需詳細資訊,請參閱 將登入重新導向至社交提供者。
- 建立或使用現有的清單對象來儲存額外的查詢參數。
-
domain_hint將具有對應網域名稱的參數新增至清單(例如 ,facebook.com。 - 將額外的查詢參數清單傳遞至 MSAL 組
withAuthorizationQueryStringParameters態物件的方法。
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("domain_hint", "facebook.com"))
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
指定UI語言
Azure AD B2C 中的語言自定義可讓您的使用者流程適應各種語言,以符合客戶需求。 如需詳細資訊,請參閱 語言自定義。
若要設定慣用的語言,請執行下列動作:
- 設定語言自定義。
- 建立或使用現有的清單對象來儲存額外的查詢參數。
-
ui_locales將具有對應語言程式代碼的參數新增至清單(例如, 。en-us - 將額外的查詢參數清單傳遞至 MSAL 組
withAuthorizationQueryStringParameters態物件的方法。
val extraQueryParameters: MutableList<Map.Entry<String, String>> = ArrayList()
val mapEntry = object : Map.Entry<String, String> {
override val key: String = "ui_locales"
override val value: String = "en-us"
}
extraQueryParameters.add(mapEntry )
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
傳遞自訂查詢字串參數
使用自定義原則,您可以傳遞自定義查詢字串參數。 良好的使用案例範例是當您想要 動態變更頁面內容時。
若要傳遞自訂查詢字串參數,請執行下列動作:
- 設定 ContentDefinitionParameters 元素。
- 建立或使用現有的清單對象來儲存額外的查詢參數。
- 新增自訂查詢字串參數,例如
campaignId。 設定參數值 (例如 ,germany-promotion)。 - 將額外的查詢參數清單傳遞至 MSAL 組
withAuthorizationQueryStringParameters態物件的方法。
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("campaignId", "germany-promotion"))
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
傳遞 ID 令牌提示
信賴方應用程式可以在 OAuth2 授權要求中傳送入境 JSON Web 令牌(JWT)。 輸入令牌提供有關用戶或授權請求的線索。 Azure AD B2C 會驗證令牌,然後擷取聲明。
若要在驗證要求中包含識別元令牌提示,請執行下列動作:
- 在您的自定義原則中,定義 ID 令牌提示技術設定檔。
- 在您的程式代碼中,產生或取得識別元令牌,然後將令牌設定為變數(例如 , 。
idToken - 建立或使用現有的清單對象來儲存額外的查詢參數。
- 新增
id_token_hint參數,其中使用儲存 ID 令牌的對應變數。 - 將額外的查詢參數清單傳遞至 MSAL 組
withAuthorizationQueryStringParameters態物件的方法。
val extraQueryParameters: MutableList<Pair<String, String>> = ArrayList()
extraQueryParameters.add(Pair("id_token_hint", idToken))
val parameters = AcquireTokenParameters.Builder()
.startAuthorizationFromActivity(activity)
.withAuthorizationQueryStringParameters(extraQueryParameters)
// More settings here
.build()
b2cApp!!.acquireToken(parameters)
內嵌網頁檢視體驗
互動式驗證需要網頁瀏覽器。 根據預設,MSAL 函式庫會使用系統的網頁檢視。 登入期間,MSAL 連結庫會以 Azure AD B2C 使用者介面彈出 Android 系統 Web 檢視。
如需詳細資訊,請參閱 使用 MSAL 在 Android 上啟用跨應用程式 SSO 一文。
視您的需求而定,您可以使用內嵌 Web 檢視。 內嵌 Web 檢視與 MSAL 中的系統 Web 檢視之間有視覺和單一登錄行為差異。
這很重要
我們建議您使用平台預設值,這通常是系統瀏覽器。 系統瀏覽器最好記住先前登入的使用者。 某些身分識別提供者,例如Google,不支援內嵌的檢視體驗。
若要變更此行為,請開啟 app/src/main/res/raw/auth_config_b2c.json 檔案。 然後使用 值新增 authorization_user_agent 屬性 WEBVIEW 。 下列範例示範如何將 Web 檢視類型變更為內嵌檢視:
{
"authorization_user_agent": "WEBVIEW"
}
後續步驟
- 若要深入瞭解 Android 設定,請參閱 適用於 Android 的 MSAL 組態選項。