Delen via


Zelfstudie: Ondersteuning voor webterugval in Android-app

Van toepassing op: Witte cirkel met een grijs X-symbool. Werknemer-huurders Groene cirkel met een wit vinkje. Externe huurders (meer informatie)

In deze zelfstudie ziet u hoe isBrowserRequired() fout optreedt en hoe u deze kunt oplossen. De hulpprogrammamethode isBrowserRequired() controleert de noodzaak van een terugvalmechanisme voor verschillende scenario's waarbij systeemeigen verificatie niet voldoende is om de verificatiestroom op functionele en veilige wijze te voltooien.

In deze zelfstudie leert u het volgende:

  • Controleer isBrowserRequired()
  • isBrowserRequired() behandelen

Voorwaarden

Terugval op internet

Gebruik web fallbackmechanisme voor scenario's waarin systeemeigen verificatie niet voldoende is om de gebruikersverificatiestroom te doorlopen.

Wanneer u de Android SDK initialiseert, geeft u de vraagtypen op die door uw mobiele toepassing worden ondersteund, zoals oob- en wachtwoord.

Als uw client-app geen ondersteuning biedt voor een vraagtype dat Microsoft Entra vereist, geeft het antwoord van Microsoft Entra aan dat de client-app moet doorgaan met de verificatiestroom in de browser. U initialiseert bijvoorbeeld de SDK met oob uitdagingstype, maar in het Microsoft Entra-beheercentrum configureert u de app met een e-mail met wachtwoordverificatiemethode.

In dit geval geeft de hulpprogrammamethode isBrowserRequired() waar terug.

Voorbeeldstroom

Laten we eens kijken naar een voorbeeldstroom die isBrowserRequired()retourneert en hoe u deze kunt afhandelen:

  1. Voeg in het JSON-configuratiebestand, dat u tijdens de initialisatie doorgeeft aan de SDK, alleen het oob--vraagtype toe, zoals het volgende codefragment wordt weergegeven:

    PublicClientApplication.createNativeAuthPublicClientApplication( 
        requireContext(), 
        R.raw.native_auth_config  // JSON configuration file 
    ) 
    

    De native_auth_config.json-configuratie heeft het volgende codefragment:

    {
      "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
      }
    } 
    
  2. In het Microsoft Entra-beheercentrum configureert u uw gebruikersstroom voor het gebruik van e-mail met wachtwoord als verificatiemethode.

  3. Start een registratiestroom met behulp van de signUp(parameters) methode van de SDK. U krijgt een SignUpError die de isBrowserRequired() keuring doorstaat zoals Microsoft Entra verwacht met het -wachtwoord en het -oob-uitdagingstype, maar u hebt uw SDK alleen geconfigureerd met oob.

  4. Als u de isBrowserRequired()wilt controleren en afhandelen, gebruikt u het volgende codefragment:

    val parameters = NativeAuthSignUpParameters(username = email)
    val actionResult: SignUpResult = authClient.signUp(parameters)
    
    if (actionResult is SignUpError && actionResult.isBrowserRequired()) { 
        // Handle "browser required" error
    } 
    

    De code geeft aan dat de verificatiestroom niet kan worden voltooid via systeemeigen verificatie en dat een browser moet worden gebruikt.

Afhandelen van isBrowserRequired() fout

Als u deze fout wilt afhandelen, moet de client-app een browser starten en de verificatiestroom opnieuw starten. U kunt dit doen met behulp van msal (Microsoft Authentication Library) acquireToken() methode.

Gebruik hiervoor de volgende stappen:

  1. Als u een omleidings-URI wilt toevoegen aan de app die u eerder hebt geregistreerd, gebruikt u de stappen in Een omleidings-URL voor het platform toevoegen.

  2. Als u het configuratiebestand van uw client-app wilt bijwerken, gebruikt u de stappen in [De redir configureren

  3. ect URI in SDK-configuratie](../external-id/customers/sample-mobile-app-android-kotlin-sign-in.md#configure-the-sample-android-mobile-application).

  4. Gebruik het volgende codefragment om een token te verkrijgen met behulp van de methode 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.
        )
    } 
    

Beveiligingstokens, namelijk ID-token, toegangstoken en vernieuwingstoken, die u via de natuurlijke verificatiestroom ontvangt, zijn dezelfde tokens als die u krijgt via het door de browser gedelegeerde proces.