Zelfstudie: Ondersteuning voor webterugval in Android-app
In deze zelfstudie ziet u hoe isBrowserRequired()
er een 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:
- Cheque
isBrowserRequired()
- Handvat
isBrowserRequired()
Vereisten
- Voltooi de stappen in Gebruikers aanmelden in een voorbeeld van een systeemeigen mobiele Android-toepassing. In dit artikel wordt beschreven hoe u een voorbeeld-Android uitvoert die u configureert met behulp van uw tenantinstellingen.
- Voer de stappen in zelfstudie uit: Eenmalige wachtwoordcode toevoegen en afmelden met e-mail.
Terugval op internet
Gebruik een terugvalmechanisme voor web voor scenario's waarbij systeemeigen verificatie niet voldoende is om de gebruikersverificatiestroom te voltooien.
Wanneer u de Android SDK initialiseert, geeft u de uitdagingstypen 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 het type oob-uitdaging , maar in het Microsoft Entra-beheercentrum configureert u de app met een e-mail met wachtwoordverificatiemethode.
In dit geval retourneert de hulpprogrammamethode isBrowserRequired()
true.
Voorbeeldstroom
Laten we eens kijken naar een voorbeeldstroom die wordt geretourneerd isBrowserRequired()
en hoe u deze kunt afhandelen:
Voeg in het JSON-configuratiebestand dat u tijdens de initialisatie doorgeeft aan de SDK alleen het type oob-uitdaging 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 } }
Configureer uw gebruikersstroom in het Microsoft Entra-beheercentrum om e-mail met wachtwoord te gebruiken als verificatiemethode.
Start een registratiestroom met behulp van de methode van
signUp(parameters)
de SDK. U krijgt eenSignUpError
controle die wordtisBrowserRequired()
doorgegeven als Microsoft Entra verwacht het wachtwoord en het type oob-uitdaging , maar u hebt uw SDK geconfigureerd met alleen oob.Gebruik het volgende codefragment om het
isBrowserRequired()
codefragment te controleren en te verwerken: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.
Handle 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 de MSAL-methode acquireToken()
(Microsoft Authentication Library).
Volg hiervoor de volgende stappen:
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.
Als u het configuratiebestand van uw client-app wilt bijwerken, gebruikt u de stappen in De omleidings-URI configureren in de configuratie van de SDK.
Gebruik het volgende codefragment om een token te verkrijgen met behulp van de
acquireToken()
methode: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, dat is id-token, toegangstoken en vernieuwingstoken, u krijgt via de systeemeigen verificatiestroom hetzelfde als het token dat u krijgt via de door de browser gedelegeerde stroom.
Gerelateerde inhoud
- Meer informatie over het uitvoeren van de iOS-voorbeeld-app
- Verken systeemeigen verificatie-API-naslaginformatie met eenmalige wachtwoordcode voor e-mail.
- Meer informatie over uitdagingstypen.