共用方式為


使用 Azure AD B2C 在 Android 應用程式中設定驗證選項

這很重要

自 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 會自動填入登入名稱,而且使用者只需要提供密碼。

若要預填登入名稱,請執行以下步驟:

  1. 如果您使用自定義原則,請新增必要的輸入宣告,如 設定直接登入中所述。
  2. 尋找您的 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 登入頁面。

若要將使用者重新導向至外部識別提供者,請執行下列動作:

  1. 檢查您的外部身份提供者的網域名稱。 如需詳細資訊,請參閱 將登入重新導向至社交提供者
  2. 建立或使用現有的清單對象來儲存額外的查詢參數。
  3. domain_hint將具有對應網域名稱的參數新增至清單(例如 , facebook.com
  4. 將額外的查詢參數清單傳遞至 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 中的語言自定義可讓您的使用者流程適應各種語言,以符合客戶需求。 如需詳細資訊,請參閱 語言自定義

若要設定慣用的語言,請執行下列動作:

  1. 設定語言自定義
  2. 建立或使用現有的清單對象來儲存額外的查詢參數。
  3. ui_locales將具有對應語言程式代碼的參數新增至清單(例如, 。 en-us
  4. 將額外的查詢參數清單傳遞至 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)

傳遞自訂查詢字串參數

使用自定義原則,您可以傳遞自定義查詢字串參數。 良好的使用案例範例是當您想要 動態變更頁面內容時。

若要傳遞自訂查詢字串參數,請執行下列動作:

  1. 設定 ContentDefinitionParameters 元素。
  2. 建立或使用現有的清單對象來儲存額外的查詢參數。
  3. 新增自訂查詢字串參數,例如 campaignId。 設定參數值 (例如 , germany-promotion)。
  4. 將額外的查詢參數清單傳遞至 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 會驗證令牌,然後擷取聲明。

若要在驗證要求中包含識別元令牌提示,請執行下列動作:

  1. 在您的自定義原則中,定義 ID 令牌提示技術設定檔
  2. 在您的程式代碼中,產生或取得識別元令牌,然後將令牌設定為變數(例如 , 。 idToken
  3. 建立或使用現有的清單對象來儲存額外的查詢參數。
  4. 新增 id_token_hint 參數,其中使用儲存 ID 令牌的對應變數。
  5. 將額外的查詢參數清單傳遞至 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 檢視之間有視覺和單一登錄行為差異。

顯示系統 Web 檢視體驗與內嵌 Web 檢視體驗差異的螢幕快照。

這很重要

我們建議您使用平台預設值,這通常是系統瀏覽器。 系統瀏覽器最好記住先前登入的使用者。 某些身分識別提供者,例如Google,不支援內嵌的檢視體驗。

若要變更此行為,請開啟 app/src/main/res/raw/auth_config_b2c.json 檔案。 然後使用 值新增 authorization_user_agent 屬性 WEBVIEW 。 下列範例示範如何將 Web 檢視類型變更為內嵌檢視:

{
  "authorization_user_agent": "WEBVIEW" 
}

後續步驟