Настройка способов проверки подлинности в приложении Android с помощью Azure AD B2C
В этой статье рассказывается, как включить, настроить и улучшить проверку подлинности Azure Active Directory B2C (Azure AD B2C) для приложения Android.
Прежде чем приступить к работе, ознакомьтесь с указанными ниже статьями.
- Настройка проверки подлинности в примере приложения Android с помощью Azure Active Directory B2C
- Включение аутентификации в собственном приложении Android с помощью Azure Active Directory B2C
Использование личного домена
С помощью личного домена можно полностью брендировать URL-адрес проверки подлинности. С точки зрения пользователя, пользователи остаются в вашем домене во время процесса аутентификации, а не перенаправляются на доменное имя b2clogin.com в Azure AD B2C.
Чтобы удалить все ссылки на b2c в URL-адресе, вы также можете заменить свое имя клиента B2C, contoso.onmicrosoft.com, в URL-адресе запроса проверки подлинности на свой GUID идентификатора клиента. Например, можно изменить https://fabrikamb2c.b2clogin.com/contoso.onmicrosoft.com/
на https://account.contosobank.co.uk/<tenant ID GUID>/
.
Чтобы использовать личный домен и ваш идентификатор клиента в URL-адресе проверки подлинности, выполните инструкции, изложенные в статье Подключение личных доменов в Azure Active Directory B2C. Найдите объект конфигурации для библиотеки проверки подлинности Майкросфт (MSAL) и измените параметр authorities, указав имя личного домена и идентификатор клиента.
Следующий код 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 автоматически заполняет имя для входа в систему — пользователю нужно ввести только пароль.
Чтобы предварительно заполнить имя для входа, выполните следующие действия.
- Если вы используете настраиваемую политику, добавьте обязательное входящее утверждение, как описано в статье Настройка прямого входа в систему.
- Найдите объект конфигурации 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.
Чтобы перенаправить пользователей к внешнему поставщику удостоверений, выполните следующие действия.
- Проверьте доменное имя внешнего поставщика удостоверений. Дополнительные сведения см. в статье Перенаправление входа в поставщика социальных сетей.
- Создайте объект list или используйте существующий объект list для хранения дополнительных параметров запроса.
- Добавьте параметр
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)
Указание языка пользовательского интерфейса
Настройка языка в Azure AD B2C позволяет поддерживать в потоке разные языки в соответствии с требованиями пользователей. Дополнительные сведения см. в статье Настройка языка.
Чтобы задать предпочитаемый язык, выполните следующие действия:
- Настройте язык.
- Создайте объект list или используйте существующий объект list для хранения дополнительных параметров запроса.
- Добавьте параметр
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.
- Создайте объект list или используйте существующий объект list для хранения дополнительных параметров запроса.
- Добавьте параметр строки пользовательского запроса, например
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)
Передача указания к маркеру идентификатора
Приложения проверяющей стороны могут передавать входящие маркеры JSON Web Token (JWT) в рамках запроса авторизации OAuth2. Входящий маркер представляет собой указание о пользователе или запросе на авторизацию. Azure AD B2C проверяет маркер и извлекает утверждение.
Чтобы включить указание маркера идентификатора в запрос проверки подлинности, сделайте следующее:
- В пользовательской политике определите технический профиль указания для маркера идентификатора.
- В коде создайте или получите маркер идентификации и задайте для него переменную (например,
idToken
). - Создайте объект list или используйте существующий объект list для хранения дополнительных параметров запроса.
- Добавьте параметр
id_token_hint
с соответствующей переменной, в которой хранится маркер идентификатора. - Передайте список дополнительных параметров запроса в метод объекта конфигурации 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 отображает системное веб-представление Android с помощью пользовательского интерфейса Azure AD B2C.
Дополнительные сведения см. в статье Реализация единого входа для нескольких приложений Android с помощью MSAL.
В зависимости от ваших требований можно использовать встроенное веб-представление. Между встроенным веб-представлением и системным веб-представлением в MSAL есть различия в части оформления и действий при выполнении единого входа.
Важно!
Мы рекомендуем использовать платформу, применяемую по умолчанию, которая обычно представляет собой системный браузер. Системный браузер лучше запоминает пользователей, выполнивших вход ранее. Некоторые поставщики удостоверений, например Google, не поддерживают встроенный интерфейс представления.
Чтобы изменить это поведение, откройте файл app/src/main/res/raw/auth_config_b2c.json. Затем добавьте атрибут authorization_user_agent
со значением WEBVIEW
. В приведенном ниже примере показано, как изменить тип веб-представления на внедренное представление.
{
"authorization_user_agent": "WEBVIEW"
}
Дальнейшие действия
- Дополнительные сведения о конфигурации Android см. в статье Параметры конфигурации MSAL для Android.