Tutorial: Unterstützung für Webfallback in einer Android-App
In diesem Lernprogramm wird veranschaulicht, wie isBrowserRequired()
-Fehler auftreten und wie Sie diese beheben können. Die Hilfsmethode isBrowserRequired()
unterstützt den Bedarf an einem Fallbackmechanismus für verschiedene Szenarien, in denen die native Authentifizierung nicht ausreicht, um den Flow auf funktionale und sichere Weise abzuschließen.
In diesem Tutorial lernen Sie Folgendes:
- Überprüfen von
isBrowserRequired()
- Behandeln von
isBrowserRequired()
Voraussetzungen
- Führen Sie die Schritte unter Anmelden von Benutzern und Benutzerinnen in einer mobilen und nativen Android-Beispielanwendung aus. In diesem Artikel erfahren Sie, wie Sie ein Android-Beispiel ausführen, das Sie mit Ihren Mandanteneinstellungen konfigurieren.
- Führen Sie die Schritte im Lernprogramm: Hinzufügen der Anmeldung und Abmeldung mit Einmal-Passcode über E-Mail aus.
Web-Fallback
Verwenden Sie den Web-Fallbackmechanismus für Szenarien, in denen die native Authentifizierung nicht ausreicht, um den Benutzerauthentifizierungsflow abzuschließen.
Wenn Sie das Android SDK initialisieren, geben Sie die von Ihrer mobilen Anwendung unterstützten Aufforderungstypen an, z. B. oob und password.
Wenn Ihre Client-App einen von Microsoft Entra geforderten Aufforderungstyp nicht unterstützen kann, gibt die Antwort von Microsoft Entra an, dass die Client-App den Authentifizierungsflow im Browser fortsetzen muss. Beispielsweise initialisieren Sie das SDK mit dem Aufforderungstyp oob, aber im Microsoft Entra Admin Center konfigurieren Sie die App mit einer Authentifizierungsmethode „E-Mail mit Kennwort“.
In diesem Fall gibt die Hilfsmethode isBrowserRequired()
„true“ zurück.
Beispielflow
Sehen wir uns einen Beispielflow an, der isBrowserRequired()
zurückgibt, und wie Sie damit umgehen können:
Fügen Sie in der JSON-Konfigurationsdatei, die Sie während der Initialisierung an das SDK übergeben, nur den Aufforderungstyp oob hinzu, wie im folgenden Codeschnipsel dargestellt:
PublicClientApplication.createNativeAuthPublicClientApplication( requireContext(), R.raw.native_auth_config // JSON configuration file )
Die
native_auth_config.json
-Konfiguration hat den folgenden Codeschnipsel:{ "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 } }
Konfigurieren Ihren Benutzerfluss Sie im Microsoft Entra Admin Center so, dass Email mit Kennwort als Authentifizierungsmethode verwendet wird.
Starten Sie einen Registrierungsflow mithilfe der SDK-Methode
signUp(username)
. Sie erhalten einenSignUpError
, der dieisBrowserRequired()
-Überprüfung besteht, da Microsoft Entra den Aufforderungstyp password und oob erwartet, aber Sie haben Ihr SDK nur mit oob konfiguriert.Verwenden Sie zur Prüfung und Behandlung von
isBrowserRequired()
den folgenden Codeschnipsel:val actionResult = authClient.signUp( username = email ) if (actionResult is SignUpError && actionResult.isBrowserRequired()) { // Handle "browser required" error }
Der Code zeigt an, dass der Authentifizierungsflow nicht über native Authentifizierungs-SDK- oder API-Methoden abgeschlossen werden kann und ein Browser verwendet werden muss.
Behandeln des isBrowserRequired()-Fehlers
Um diesen Fehler zu behandeln, muss die Client-App einen Browser aufrufen und den Authentifizierungsflow neu starten. Sie können die acquireToken()
-Methode der Microsoft Authentication Library (MSAL) verwenden.
Führen Sie dazu die folgenden Schritte aus:
Wenn Sie der zuvor registrierten App einen Umleitungs-URI hinzufügen möchten, führen Sie die Schritte unter Hinzufügen einer Plattformumleitungs-URL aus.
Um die Konfigurationsdatei Ihrer Client-App zu aktualisieren, führen Sie die Schritte unter Konfigurieren des Umleitungs-URI in der Konfiguration des SDK aus.
Verwenden Sie den folgenden Codeschnipsel, um ein Token mithilfe der
acquireToken()
-Methode abzurufen: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. ) }
Sicherheitstoken, d. h. ID-Token, Zugriffstoken und Aktualisierungstoken, die Sie über den nativen Authentifizierungsflow erhalten, sind identisch mit dem Token, das Sie über den an den Browser delegierten Flow erhalten.
Zugehöriger Inhalt
- Weitere Informationen finden Sie unter Ausführen der iOS-Beispiel-App.
- Erkunden Sie die API-Referenz zur nativen Authentifizierung mit einem per E-Mail gesendeten Einmal-Passcode.
- Erfahren Sie mehr über Aufforderungstypen.