Restaurer les identifiants d'application lors de la configuration d'un nouvel appareil

La fonctionnalité Restaurer les identifiants du Credential Manager permet aux utilisateurs de restaurer leurs comptes d'application lorsqu'ils configurent un nouvel appareil. Cette API est en version Preview pour les développeurs et disponible sur tous les appareils équipés d'Android 9 ou version ultérieure et des services Google Play (GMS) Core version 242200000 ou ultérieure. Voici quelques avantages de la fonctionnalité Restaurer les identifiants :

  • Expérience utilisateur fluide : les utilisateurs peuvent restaurer leur compte d'application sans avoir à se connecter manuellement à chaque application.
  • Engagement utilisateur accru : les utilisateurs sont plus susceptibles de continuer à utiliser votre application s'ils peuvent restaurer leur compte lors de la configuration d'un nouvel appareil.
  • Effort de développement réduit : la fonctionnalité de restauration des identifiants est intégrée au Gestionnaire d'identifiants. Les développeurs qui prennent déjà en charge les clés d'accès peuvent donc ajouter des fonctionnalités de restauration des identifiants.

Fonctionnement

Vous pouvez utiliser RestoreCredentials pour créer, obtenir et effacer les identifiants concernés.

  1. Créez les identifiants de restauration : lorsque l'utilisateur se connecte à votre application, créez des identifiants de restauration associés à son compte. Cet identifiant est stocké localement et synchronisé avec le cloud si l'utilisateur a activé la sauvegarde Google et que le chiffrement de bout en bout est disponible (les applications peuvent désactiver la synchronisation avec le cloud).
  2. Obtenir l'identifiant de restauration : lorsque l'utilisateur configure un nouvel appareil, votre application peut demander l'identifiant de restauration au Gestionnaire d'identifiants. Cela vous permet de connecter automatiquement l'utilisateur sans qu'il ait à saisir d'informations supplémentaires.
  3. Effacez les identifiants de restauration : lorsque l'utilisateur se déconnecte de votre application, vous devez supprimer les identifiants de restauration associés.

La fonctionnalité de restauration des identifiants peut s'intégrer facilement aux systèmes backend qui ont déjà implémenté des clés d'accès. Cette compatibilité est due au fait que les clés d'accès et les clés de restauration (type d'identifiant utilisé par la fonctionnalité Restaurer les identifiants) respectent les mêmes spécifications techniques sous-jacentes. Cet alignement permet de s'assurer que le processus de restauration des identifiants peut récupérer et rétablir efficacement les identifiants utilisateur stockés dans les systèmes compatibles avec les clés d'accès, offrant ainsi une expérience cohérente et conviviale sur différentes plates-formes et méthodes d'authentification.

Bottom sheet du Gestionnaire d'identifiants
Figure 1. Diagramme illustrant la restauration des données d'une application sur un nouvel appareil à l'aide d'un identifiant de restauration, y compris la création de l'identifiant, le lancement d'un flux de restauration et la connexion automatique de l'utilisateur

Implémentation

L'API Restore Credentials est disponible via la bibliothèque Jetpack Credential Manager. Pour commencer, procédez comme suit :

  1. Ajoutez la dépendance Credential Manager à votre projet.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. Créer un objet CreateRestoreCredentialRequest.

  3. Appelez la méthode createCredential() sur l'objet CredentialManager.

    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)
    

    Cet identifiant de restauration généré est un type d'identifiant WebAuthn, également appelé clé de restauration.

  4. Lorsque l'utilisateur configure un nouvel appareil, appelez la méthode getCredential() sur l'objet CredentialManager.

    // Fetch the Authentication JSON from server
    val authenticationJson = fetchAuthenticationJson()
    
    // Create the GetRestoreCredentialRequest object
    val options = GetRestoreCredentialOption(authenticationJson)
    val getRequest = GetCredentialRequest(listOf(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. Lorsque l'utilisateur se déconnecte de votre application, appelez la méthode clearCredentialState() sur l'objet CredentialManager.

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

Si vous utilisez un agent de sauvegarde, effectuez la partie getCredential dans le rappel onRestore. Cela garantit que les identifiants de l'application sont restaurés immédiatement après la restauration des données de l'application.