Поделиться через


Настройка параметров проверки подлинности в приложении Android с помощью Azure AD B2C

Это важно

Начиная с 1 мая 2025 г. Azure AD B2C больше не будет доступен для приобретения для новых клиентов. Дополнительные сведения см. в разделе "Вопросы и ответы".

В этой статье описывается, как включить, настроить и улучшить возможности проверки подлинности Azure Active Directory B2C (Azure AD B2C) для приложения Android.

Прежде чем начать, ознакомьтесь со следующими статьями:

Использование личного домена

Используя пользовательский домен, вы можете полностью оформить URL-адрес проверки подлинности в соответствии с вашим брендом. С точки зрения пользователя пользователи остаются в домене во время процесса проверки подлинности, а не перенаправляются в домен azure AD B2C b2clogin.com.

Чтобы удалить все ссылки на "b2c" в URL-адресе, вы также можете заменить имя клиента B2C, contoso.onmicrosoft.com, в URL-адресе запроса проверки подлинности идентификатором GUID вашего контрагента. Например, можно изменить https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/ на https://account.contosobank.co.uk/<tenant ID GUID>/.

Чтобы использовать личный домен и идентификатор клиента в URL-адресе проверки подлинности, следуйте инструкциям в разделе "Включить пользовательские домены". Найдите библиотеку проверки подлинности Майкрософт (объект конфигурации MSAL, а затем обновите центры с помощью имени личного домена и идентификатора клиента.

В следующем коде Kotlin показан объект конфигурации MSAL перед изменением:

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 после изменения:

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. Передайте список дополнительных параметров запроса в метод объекта withAuthorizationQueryStringParameters конфигурации MSAL.
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)

Указание языка пользовательского интерфейса

Настройка языка в Azure AD B2C позволяет потоку пользователей соответствовать различным языкам в соответствии с потребностями клиентов. Дополнительные сведения см. в разделе "Настройка языка".

Чтобы задать предпочтительный язык, сделайте следующее:

  1. Настройте настройку языка.
  2. Создайте или используйте существующий объект списка для хранения дополнительных параметров запроса.
  3. ui_locales Добавьте параметр с соответствующим кодом языка в список (например, en-us).
  4. Передайте список дополнительных параметров запроса в метод объекта withAuthorizationQueryStringParameters конфигурации MSAL.
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. Передайте список дополнительных параметров запроса в метод объекта withAuthorizationQueryStringParameters конфигурации MSAL.
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)

Передайте подсказку по токену идентификатора

Приложение проверяющей стороны может отправить входящий веб-токен JSON (JWT) в рамках запроса авторизации OAuth2. Входящий маркер — это указание о пользователе или запросе авторизации. Azure AD B2C проверяет токен, а затем извлекает утверждение.

Чтобы включить идентификационный токен в запрос аутентификации, сделайте следующее:

  1. В пользовательской политике определите технический профиль указания маркера идентификатора.
  2. В коде создайте или приобретите маркер идентификатора, а затем задайте маркер переменной (например, idToken).
  3. Создайте или используйте существующий объект списка для хранения дополнительных параметров запроса.
  4. id_token_hint Добавьте параметр с соответствующей переменной, в которой хранится маркер идентификатора.
  5. Передайте список дополнительных параметров запроса в метод объекта withAuthorizationQueryStringParameters конфигурации MSAL.
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 всплывает в веб-представлении системы Android с пользовательским интерфейсом Azure AD B2C.

Дополнительные сведения см. в статье "Включение единого входа между приложениями в Android" с помощью статьи MSAL .

В зависимости от требований можно использовать внедренное веб-представление. Существуют различия в поведении визуальных элементов и единого входа между встроенным веб-интерфейсом и системным веб-интерфейсом в MSAL.

Снимок экрана, демонстрирующий разницу между интерфейсом системного веб-представления и встроенным интерфейсом веб-представления.

Это важно

Рекомендуется использовать платформу по умолчанию, которая обычно является системным браузером. Системный браузер лучше запоминает пользователей, которые уже входили в систему. Некоторые поставщики удостоверений, такие как Google, не поддерживают встроенный интерфейс просмотра.

Чтобы изменить это поведение, откройте файл приложения/src/main/res/raw/auth_config_b2c.json . Затем добавьте authorization_user_agent атрибут со значением WEBVIEW . В следующем примере показано, как изменить тип веб-представления на внедренное представление:

{
  "authorization_user_agent": "WEBVIEW" 
}

Дальнейшие шаги