Självstudie: Stöd för webbfallback i Android-appen
Gäller för: Workforce-hyresgäster
externa hyresgäster (läs mer)
Den här handledningen visar hur felet isBrowserRequired()
inträffar och hur du kan lösa det. Verktygsmetoden isBrowserRequired()
kontrollerar behovet av en återställningsmekanism för olika scenarier där intern autentisering inte räcker för att slutföra autentiseringsflödet på ett funktionellt och säkert sätt.
I den här guiden lär du dig:
- Kontrollera
isBrowserRequired()
- Hantera
isBrowserRequired()
Förutsättningar
- Slutför stegen i Logga in användare i ett exempel på ett inbyggt Android-mobilprogram. Den här artikeln visar hur du kör ett Android-exempel som du konfigurerar med hjälp av klientinställningarna.
- Slutför stegen i Självstudie: Lägg till inloggnings- och utloggningsfunktion med engångskoder för e-post.
Nödåtgärd för webben
Använd webbfallback-mekanism för scenarier där intern autentisering inte är tillräcklig för att slutföra användarautentiseringsflödet.
När du initierar Android SDK anger du de utmaningstyper som ditt mobilprogram stöder, till exempel oob och lösenord.
Om klientappen inte kan stödja en utmaningstyp som Microsoft Entra kräver anger Microsoft Entras svar att klientappen måste fortsätta med autentiseringsflödet i webbläsaren. Du initierar till exempel SDK med oob utmaningstyp, men i administrationscentret för Microsoft Entra konfigurerar du appen med en e-post med lösenordsautentiseringsmetod.
I det här fallet returnerar verktygsmetoden isBrowserRequired()
sant.
Exempelflöde
Nu ska vi titta på ett exempelflöde som returnerar isBrowserRequired()
och hur du kan hantera det:
I JSON-konfigurationsfilen, som du skickar till SDK under initieringen, lägger du bara till oob utmaningstyp enligt följande kodfragment:
PublicClientApplication.createNativeAuthPublicClientApplication( requireContext(), R.raw.native_auth_config // JSON configuration file )
Konfigurationen
native_auth_config.json
har följande kodfragment:{ "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 } }
I administrationscentret för Microsoft Entra konfigurera ditt användarflöde att använda e-post med lösenord som autentiseringsmetod.
Starta ett registreringsflöde med hjälp av SDK:s
signUp(parameters)
-metod. Du får enSignUpError
som klararisBrowserRequired()
-kontrollen eftersom Microsoft Entra förväntar sig lösenord och oob-utmaningstypen, men du konfigurerade din SDK med endast oob.Om du vill kontrollera och hantera
isBrowserRequired()
använder du följande kodfragment:val parameters = NativeAuthSignUpParameters(username = email) val actionResult: SignUpResult = authClient.signUp(parameters) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { // Handle "browser required" error }
Koden anger att autentiseringsflödet inte kan slutföras via intern autentisering och att en webbläsare måste användas.
Hantera isBrowserRequired()-fel
För att hantera det här felet måste klientappen starta en webbläsare och starta om autentiseringsflödet. Du kan göra det med hjälp av Microsoft Authentication Library (MSAL) acquireToken()
-metoden.
Använd följande steg för att göra det:
Om du vill lägga till en omdirigerings-URI i appen som du registrerade tidigare använder du stegen i Lägg till en url för omdirigering av plattform.
Om du vill uppdatera klientappens konfigurationsfil använder du stegen i [Konfigurera redir
Anslutnings-URI i SDK:ets konfiguration](../external-id/customers/sample-mobile-app-android-kotlin-sign-in.md#configure-the-sample-android-mobile-application).
Använd följande kodfragment för att hämta en token med hjälp av metoden
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. ) }
Säkerhetstoken, som är ID-token, åtkomsttoken och uppdateringstoken, du får via det interna autentiseringsflödet är samma som den token som du får via webbläsardelegeringsflödet.
Relaterat innehåll
- Lär dig Så här kör du iOS-exempelappen
- Utforska API-referens för intern autentisering med e-postlösenord.
- Lär dig mer om utmaningstyper.