Samouczek: obsługa rezerwowego w internecie w aplikacji dla systemu Android
W tym samouczku pokazano, jak isBrowserRequired()
występuje błąd i jak można go rozwiązać. Metoda isBrowserRequired()
narzędzia 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.
Z tego samouczka dowiesz się, jak wykonywać następujące czynności:
- Sprawdzić
isBrowserRequired()
- Uchwyt
isBrowserRequired()
Wymagania wstępne
- Wykonaj kroki opisane w artykule Logowanie użytkowników w przykładowej natywnej aplikacji mobilnej dla systemu Android. W tym artykule pokazano, jak uruchomić przykładowy system Android skonfigurowany przy użyciu ustawień dzierżawy.
- Wykonaj kroki opisane w artykule Samouczek: dodawanie logowania i wylogowywanie się przy użyciu jednorazowego kodu dostępu poczty e-mail.
Powrót do sieci Web
Użyj mechanizmu rezerwowego sieci Web 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 zainicjujesz zestaw SDK przy użyciu typu wyzwania oob , ale w centrum administracyjnym firmy Microsoft Entra skonfigurujesz aplikację przy użyciu poczty e-mail z metodą uwierzytelniania haseł.
W tym przypadku metoda isBrowserRequired()
narzędzia zwraca wartość true.
Przykładowy przepływ
Przyjrzyjmy się przykładowej przepływowi, który zwraca isBrowserRequired()
wartość i 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
ma 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 firmy Microsoft Entra skonfiguruj przepływ użytkownika, aby używał poczty e-mail z hasłem jako metody uwierzytelniania.
Uruchom przepływ rejestracji przy użyciu metody zestawu SDK
signUp(username)
. Otrzymasz elementSignUpError
isBrowserRequired()
, który przejdzie sprawdzanie, ponieważ firma Microsoft Entra oczekuje hasła i typu wyzwania oob , ale zestaw SDK został skonfigurowany tylko przy użyciu obiektu oob.Aby sprawdzić i obsłużyć element , użyj następującego fragmentu
isBrowserRequired()
kodu:val actionResult = authClient.signUp( username = email ) 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.
Błąd handle 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 biblioteki Microsoft Authentication Library (MSAL). acquireToken()
Aby to zrobić, wykonaj następujące kroki:
Aby dodać identyfikator URI przekierowania do zarejestrowanej wcześniej aplikacji, wykonaj kroki opisane w temacie Dodawanie adresu URL przekierowania platformy.
Aby zaktualizować plik konfiguracji aplikacji klienckiej, wykonaj kroki opisane w temacie Konfigurowanie identyfikatora URI przekierowania w konfiguracji zestawu SDK.
Użyj następującego fragmentu kodu, aby uzyskać token przy użyciu
acquireToken()
metody :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. ) }
Tokeny zabezpieczające, token identyfikatora, token dostępu i token odświeżania. Przepływ uwierzytelniania natywnego jest taki sam jak token uzyskiwany 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ą interfejsu API uwierzytelniania natywnego przy użyciu jednorazowego kodu dostępu poczty e-mail.
- Dowiedz się więcej o typach wyzwań.