Руководство по поддержке веб-резервного размещения в приложении Android
В этом руководстве показано, как происходит ошибка и как isBrowserRequired()
ее можно устранить. Метод isBrowserRequired()
служебной программы проверяет необходимость резервного механизма для различных сценариев, когда собственная проверка подлинности недостаточно для выполнения потока проверки подлинности функциональным и безопасным способом.
В этом руководстве описано следующее:
- Проверка
isBrowserRequired()
- Ручка
isBrowserRequired()
Необходимые компоненты
- Выполните действия, описанные в разделе "Вход пользователей" в примере мобильного приложения Android. В этой статье показано, как запустить пример Android, настроенный с помощью параметров клиента.
- Выполните действия, описанные в руководстве по добавлению входа и выходу с помощью однократного секретного кода электронной почты.
Резервный веб-сервер
Используйте резервный механизм веб-размещения для сценариев, в которых собственная проверка подлинности недостаточно для завершения потока проверки подлинности пользователей.
При инициализации пакета SDK для Android вы указываете типы проблем, поддерживаемые мобильным приложением, например oob и пароль.
Если клиентское приложение не может поддерживать тип вызова, который требуется Microsoft Entra, ответ Microsoft Entra указывает, что клиентское приложение должно продолжать поток проверки подлинности в браузере. Например, вы инициализируете пакет SDK с типом вызова oob , но в Центре администрирования Microsoft Entra вы настраиваете приложение с помощью электронной почты с помощью метода проверки подлинности паролей.
В этом случае метод isBrowserRequired()
служебной программы возвращает значение true.
Пример потока
Рассмотрим пример потока, который возвращается isBrowserRequired()
, и как его можно обрабатывать:
В файле конфигурации JSON, который передается пакету SDK во время инициализации, добавьте только тип вызова oob , как показано в следующем фрагменте кода:
PublicClientApplication.createNativeAuthPublicClientApplication( requireContext(), R.raw.native_auth_config // JSON configuration file )
Конфигурация
native_auth_config.json
содержит следующий фрагмент кода:{ "client_id" : "{Enter_the_Application_Id_Here}", "authorities" : [ { "type": "CIAM", "authority_url": "https://{Enter_the_Tenant_Subdomain_Here}.ciamlogin.com/{Enter_the_Tenant_Subdomain_Here}.onmicrosoft.com/" } ], "challenge_types" : ["oob"], "logging": { "pii_enabled": false, "log_level": "INFO", "logcat_enabled": true } }
В Центре администрирования Microsoft Entra настройте поток пользователя для использования электронной почты с паролем в качестве метода проверки подлинности.
Запустите поток регистрации с помощью метода ПАКЕТА SDK
signUp(username)
. Вы получаете проверку,isBrowserRequired()
так как Microsoft Entra ожидает пароль и тип вызова oob, но вы настроили пакет SDK только для oob.SignUpError
Чтобы проверить и обработать
isBrowserRequired()
код, используйте следующий фрагмент кода:val actionResult = authClient.signUp( username = email ) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { // Handle "browser required" error }
Код указывает, что поток проверки подлинности не может быть завершен с помощью собственной проверки подлинности и что браузер должен использоваться.
Ошибка Handle isBrowserRequired()
Чтобы обработать эту ошибку, клиентское приложение необходимо запустить браузер и перезапустить поток проверки подлинности. Можно выполнить с помощью метода библиотеки проверки подлинности Майкрософт (MSAL acquireToken()
).
Для этого выполните следующие действия.
Чтобы добавить URI перенаправления в приложение, зарегистрированное ранее, выполните действия, описанные в разделе "Добавление URL-адреса перенаправления платформы".
Чтобы обновить файл конфигурации клиентского приложения, выполните действия, описанные в разделе "Настройка URI перенаправления" в конфигурации пакета SDK.
Используйте следующий фрагмент кода для получения маркера
acquireToken()
с помощью метода:val actionResult = authClient.signUp( username = email ) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { authClient.acquireToken( AcquireTokenParameters( AcquireTokenParameters.Builder() .startAuthorizationFromActivity(requireActivity()) .withScopes(getScopes()) .withCallback(getAuthInteractiveCallback()) ) // Result will contain account and tokens retrieved through the browser. ) }
Маркеры безопасности, это маркер идентификатора, маркер доступа и маркер обновления, вы получаете через собственный поток проверки подлинности так же, как маркер, который вы получаете через делегированный браузером поток.
Связанный контент
- Узнайте, как запустить пример приложения iOS
- Ознакомьтесь со ссылкой на API собственной проверки подлинности с помощью одноразового секретного кода электронной почты.
- Узнайте о типах проблем.