Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Применяется:
Внешние клиенты (дополнительные сведения)
В этом руководстве показано, как происходит isBrowserRequired() ошибка и как ее можно устранить. Вспомогательный метод isBrowserRequired() проверяет необходимость резервного механизма для различных сценариев, когда встроенная проверка подлинности недостаточна для завершения процесса аутентификации функциональным и безопасным образом.
Изучив это руководство, вы:
- Проверьте
isBrowserRequired() - Обработка
isBrowserRequired()
Необходимые условия
- Выполните действия, описанные в разделе Вход пользователей в примерах собственных мобильных приложений Android. В этой статье показано, как запустить пример Android, настроенный с помощью параметров клиента.
- Выполните действия из руководства : Добавление функции входа и выхода с помощью одноразового кода доступа по электронной почте.
Резервный веб-сервер
Используйте механизм веб-резервного отката для ситуаций, когда родная аутентификация недостаточна для завершения процесса проверки подлинности пользователей.
При инициализации пакета SDK для Android вы указываете типы задач, поддерживаемые мобильным приложением, например oob и пароль.
Если клиентское приложение не может поддерживать тип испытания, требуемый Microsoft Entra, то ответ Microsoft Entra указывает на необходимость продолжения процесса аутентификации в браузере. Например, вы инициализируете пакет SDK с типом вызова-испытания oob, но в Центре администрирования Microsoft Entra вы настраиваете приложение с помощью метода аутентификации по email и паролю.
В этом случае метод служебной программы 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 настройте поток пользователя, чтобы использовать Email с паролем в качестве метода проверки подлинности.
Запустите поток регистрации с помощью метода
signUp(parameters)пакета SDK. Вы получитеSignUpError, который проходит проверкуisBrowserRequired(), так как Microsoft Entra ожидает пароль и тип проверки oob, но вы настроили ваш SDK только с oob.Чтобы проверить и обработать
isBrowserRequired(), используйте следующий фрагмент кода:val parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { // Handle "browser required" error }Код указывает, что поток проверки подлинности не может быть завершен с помощью собственной проверки подлинности и что браузер должен использоваться.
Ошибка Handle isBrowserRequired()
Чтобы обработать эту ошибку, клиентское приложение необходимо запустить браузер и перезапустить поток проверки подлинности. Вы можете осуществить это с помощью метода acquireToken() библиотеки Майкрософт для проверки подлинности (MSAL).
Для этого выполните следующие действия.
Чтобы добавить URI перенаправления в ранее зарегистрированное приложение, выполните шаги в по добавлению URL-адреса перенаправления платформы.
Чтобы обновить файл конфигурации клиентского приложения, выполните действия, описанные в разделе "Настройка примера приложения".
Используйте следующий фрагмент кода для получения токена с помощью метода
acquireToken().val parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) 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 нативной аутентификации с помощью однократного секретного кода электронной почты .
- Узнайте о типах вызовов .