Uwaga
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Dotyczy: Najemcy usługi Workforce
Najemcy zewnętrzni (dowiedz się więcej)
W tym samouczku pokazano, jak pojawia się błąd isBrowserRequired()
i jak go rozwiązać. Metoda narzędzia isBrowserRequired()
sprawdza potrzebę rezerwowego mechanizmu w różnych scenariuszach, w których uwierzytelnianie natywne nie jest wystarczające do ukończenia przepływu uwierzytelniania w sposób funkcjonalny i bezpieczny.
W tym samouczku nauczysz się następujących rzeczy:
- Sprawdź
isBrowserRequired()
- Uchwyt
isBrowserRequired()
Warunki wstępne
- Wykonaj kroki opisane w Logowanie użytkowników w przykładowej natywnej aplikacji mobilnej systemu Android. W tym artykule pokazano, jak uruchomić przykładowy system Android skonfigurowany przy użyciu ustawień dzierżawy.
- Wykonaj kroki opisane w samouczku: Zaloguj i wyloguj się za pomocą jednorazowego kodu przesłanego e-mailem.
Alternatywa dla sieci Web
Użyj mechanizmu awaryjnego webowego w scenariuszach, w których uwierzytelnianie natywne nie jest wystarczające do ukończenia przepływu uwierzytelniania użytkownika.
Podczas inicjowania zestawu SDK systemu Android należy określić typy wyzwań obsługiwane przez aplikację mobilną, takie jak oob i hasło .
Jeśli aplikacja kliencka nie może obsługiwać typu wyzwania wymaganego przez firmę Microsoft Entra, odpowiedź firmy Microsoft Entra wskazuje, że aplikacja kliencka musi kontynuować przepływ uwierzytelniania w przeglądarce. Na przykład inicjujesz SDK za pomocą typu wyzwania oob, ale w centrum administracyjnym Microsoft Entra konfigurujesz aplikację, używając metody uwierzytelniania przez e-mail i hasło.
W tym przypadku metoda narzędzia isBrowserRequired()
zwraca wartość true.
Przykładowy przepływ
Przyjrzyjmy się przykładowemu przepływowi, który zwraca isBrowserRequired()
, oraz temu, jak można go obsłużyć:
W pliku konfiguracji JSON przekazywanym do zestawu SDK podczas inicjowania dodaj tylko typ wyzwania oob, jak pokazano w poniższym fragmencie kodu:
PublicClientApplication.createNativeAuthPublicClientApplication( requireContext(), R.raw.native_auth_config // JSON configuration file )
Konfiguracja
native_auth_config.json
zawiera następujący fragment kodu:{ "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 } }
W centrum administracyjnym Microsoft Entra skonfiguruj schemat użytkownika do używania Email z hasłem jako metody uwierzytelniania.
Rozpocznij przepływ rejestracji, korzystając z metody
signUp(parameters)
zestawu SDK. OtrzymaszSignUpError
, który przejdzie kontrolęisBrowserRequired()
, ponieważ firma Microsoft Entra oczekuje hasła i typu wyzwania oob, ale skonfigurowałeś swój zestaw SDK tylko przy użyciu oob.Aby sprawdzić i obsłużyć
isBrowserRequired()
, użyj następującego fragmentu kodu:val parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { // Handle "browser required" error }
Kod wskazuje, że nie można ukończyć przepływu uwierzytelniania za pomocą uwierzytelniania natywnego i że przeglądarka musi być używana.
Obsłuż błąd isBrowserRequired()
Aby obsłużyć ten błąd, aplikacja kliencka musi uruchomić przeglądarkę i ponownie uruchomić przepływ uwierzytelniania. Można to zrobić przy użyciu metody acquireToken()
biblioteki Microsoft Authentication Library (MSAL).
W tym celu wykonaj następujące czynności:
Aby dodać adres URL przekierowania do wcześniej zarejestrowanej aplikacji, wykonaj kroki opisane w Dodawanie adresu URL przekierowania platformy.
Aby zaktualizować plik konfiguracji aplikacji klienckiej, wykonaj kroki opisane w temacie [Konfigurowanie rediru
ect URI w konfiguracji zestawu SDK](.. /external-id/customers/sample-mobile-app-android-kotlin-sign-in.md#configure-the-sample-android-mobile-application).
Użyj następującego fragmentu kodu, aby uzyskać token przy użyciu metody
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. ) }
Tokeny zabezpieczające, czyli token identyfikacyjny, token dostępu i token odświeżania, uzyskane w ramach natywnego przepływu uwierzytelniania są takie same jak tokeny uzyskane za pośrednictwem przepływu delegowanego przez przeglądarkę.
Powiązana zawartość
- Dowiedz się Jak uruchomić przykładową aplikację systemu iOS
- Zapoznaj się z dokumentacją API uwierzytelniania natywnego za pomocą jednorazowego kodu dostępu z e-maila.
- Dowiedz się więcej o typach wyzwań .