Anmeldedaten für Apps bei der Einrichtung eines neuen Geräts wiederherstellen

Mit der Funktion Anmeldedaten wiederherstellen des Anmeldedaten-Managers können Nutzer ihre App-Konten wiederherstellen, wenn sie ein neues Gerät einrichten. Diese API befindet sich in der Entwicklervorschau und ist auf allen Geräten mit Android 9 oder höher und der Google Play-Dienste-Kernversion 242200000 oder höher verfügbar. Die Funktion „Anmeldedaten wiederherstellen“ bietet folgende Vorteile:

  • Einfache Bedienung: Nutzer können ihr App-Konto wiederherstellen, ohne sich manuell in jeder einzelnen App anmelden zu müssen.
  • Mehr Nutzerinteraktionen: Nutzer sind eher bereit, Ihre App weiter zu verwenden, wenn sie ihr Konto bei der Einrichtung eines neuen Geräts wiederherstellen können.
  • Reduzierte Entwicklungsaufwand: Die Funktion „Anmeldedaten wiederherstellen“ ist in den Anmeldedaten-Manager integriert. Entwickler, die bereits Passkeys unterstützen, können Funktionen zur Wiederherstellung von Anmeldedaten hinzufügen.

Funktionsweise

Mit „Anmeldedaten wiederherstellen“ können Sie die entsprechenden Anmeldedaten erstellen, abrufen und löschen.

  1. Wiederherstellungs-Anmeldedaten erstellen: Wenn sich der Nutzer in Ihrer App anmeldet, erstellen Sie Wiederherstellungs-Anmeldedaten, die mit seinem Konto verknüpft sind. Diese Anmeldedaten werden lokal gespeichert und mit der Cloud synchronisiert, wenn der Nutzer Google Back-up aktiviert hat und eine Ende-zu-Ende-Verschlüsselung verfügbar ist. Die Synchronisierung mit der Cloud kann in Apps deaktiviert werden.
  2. Anmeldedaten für die Wiederherstellung abrufen: Wenn der Nutzer ein neues Gerät einrichtet, kann Ihre App die Anmeldedaten für die Wiederherstellung von der Anmeldeinformationsverwaltung anfordern. So können Sie den Nutzer automatisch anmelden, ohne dass er etwas eingeben muss.
  3. Anmeldedaten für die Wiederherstellung löschen: Wenn sich der Nutzer von Ihrer App abmeldet, sollten Sie die zugehörigen Anmeldedaten für die Wiederherstellung löschen.

Die Funktion „Anmeldedaten wiederherstellen“ lässt sich nahtlos in Backend-Systeme integrieren, in denen bereits Passkeys implementiert sind. Diese Kompatibilität ergibt sich daraus, dass sowohl Passkeys als auch Wiederherstellungsschlüssel (Anmeldedatentyp, der von der Funktion „Anmeldedaten wiederherstellen“ verwendet wird) denselben zugrunde liegenden technischen Spezifikationen entsprechen. Durch diese Abstimmung können Anmeldedaten, die in Passkey-kompatiblen Systemen gespeichert sind, mit dem Prozess „Anmeldedaten wiederherstellen“ effektiv abgerufen und reaktiviert werden. So wird eine einheitliche und nutzerfreundliche Nutzung auf verschiedenen Plattformen und Authentifizierungsmethoden ermöglicht.

Untere Ansicht des Anmeldedaten-Managers
Abbildung 1: Diagramm, das die Wiederherstellung von App-Daten auf einem neuen Gerät mithilfe von Wiederherstellungsanmeldedaten darstellt, einschließlich Erstellen der Anmeldedaten, Initiieren eines Wiederherstellungsvorgangs und automatischer Nutzeranmeldung

Implementierung

Die Restore Credentials API ist über die Credential Manager Jetpack-Bibliothek verfügbar. Die App lässt sich so aktivieren:

  1. Fügen Sie Ihrem Projekt die Abhängigkeit „Credential Manager“ hinzu.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. Erstellen Sie ein CreateRestoreCredentialRequest-Objekt.

  3. Rufen Sie die Methode createCredential() für das CredentialManager-Objekt auf.

    val credentialManager = CredentialManager.create(context)
    
    // On a successful authentication create a Restore Key
    // Pass in the context and CreateRestoreCredentialRequest object
    val response = credentialManager.createCredential(context, createRestoreRequest)
    

    Diese generierten Wiederherstellungsanmeldedaten sind eine Art Webauthn-Anmeldedaten und werden als Wiederherstellungsschlüssel bezeichnet.

  4. Wenn der Nutzer ein neues Gerät einrichtet, rufen Sie die Methode getCredential() für das CredentialManager-Objekt auf.

    // Fetch the Authentication JSON from server
    val authenticationJson = ...
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(Immutablelist.of(options))
    
    // The restore key can be fetched in two scenarios to
    // 1. On the first launch of app on the device, fetch the Restore Key
    // 2. In the onRestore callback (if the app implements the Backup Agent)
    val response = credentialManager.getCredential(context, getRequest)
    
  5. Wenn sich der Nutzer von Ihrer App abmeldet, rufen Sie die Methode clearCredentialState() für das CredentialManager-Objekt auf.

    // Create a ClearCredentialStateRequest object
    val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL)
    
    // On user log-out, clear the restore key
    val response = credentialManager.clearCredentialState(clearRequest)
    

Wenn du einen Sicherungsagenten verwendest, führe den Teil getCredential im onRestore-Callback aus. So werden die Anmeldedaten der App sofort nach der Wiederherstellung der App-Daten wiederhergestellt.