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

La fonctionnalité Restore Credentials (Restaurer les identifiants) du Gestionnaire d'identifiants permet aux utilisateurs de restaurer leurs comptes d'application lors de la configuration d'un nouvel appareil. Cette API est en version Preview développeur et est disponible sur tous les appareils équipés d'Android 9 ou version ultérieure et de la version 242200000 ou ultérieure des services Google Play (GMS). Voici quelques-uns des 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.
  • Efforts de développement réduits: la fonctionnalité de restauration des identifiants est intégrée au Gestionnaire d'identifiants. Les développeurs qui acceptent déjà les clés d'accès peuvent donc ajouter des fonctionnalités de restauration des identifiants.

Fonctionnement

Vous pouvez utiliser la fonctionnalité Restaurer les identifiants pour créer, obtenir et effacer les identifiants appropriés.

  1. Créer les identifiants de restauration: lorsque l'utilisateur se connecte à votre application, créez des identifiants de restauration associés à son compte. Ces identifiants sont stockés localement et synchronisés 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 les identifiants de restauration: lorsque l'utilisateur configure un nouvel appareil, votre application peut demander les identifiants de restauration au Gestionnaire d'identifiants. Vous pouvez ainsi connecter automatiquement l'utilisateur sans aucune saisie supplémentaire.
  3. Effacer 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é découle du fait que les clés d'accès et les clés de restauration (type d'identifiants utilisé par la fonctionnalité de restauration des identifiants) respectent les mêmes spécifications techniques sous-jacentes. Cet alignement garantit que le processus de restauration des identifiants peut récupérer et rétablir efficacement les identifiants utilisateur stockés dans des 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'identifiants de restauration, y compris la création des identifiants, 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 du Gestionnaire d'identifiants. Pour l'activer, procédez comme suit :

  1. Ajoutez la dépendance du Gestionnaire d'identifiants à 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)
    

    Ces identifiants de restauration générés sont un type d'identifiants WebAuthn et sont appelés 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 = ...
    
    // 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. 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.