La funzionalità Ripristina credenziali di Credential Manager consente agli utenti di ripristinare i propri account app durante la configurazione di un nuovo dispositivo. Questa API è in anteprima per gli sviluppatori e disponibile su tutti i dispositivi con Android 9 o versioni successive e Google Play Services (GMS) Core versione 242200000 o successive. I vantaggi della funzionalità Ripristina credenziali includono:
- Esperienza utente perfetta: gli utenti possono ripristinare l'account dell'app senza dover accedere manualmente a ogni singola app.
- Maggiore coinvolgimento degli utenti: gli utenti hanno maggiori probabilità di continuare a utilizzare la tua app se possono ripristinare il proprio account durante la configurazione di un nuovo dispositivo.
- Sforzo di sviluppo ridotto: la funzionalità Ripristina credenziali è integrata con Credential Manager, quindi gli sviluppatori che già supportano le passkey possono aggiungere funzionalità di ripristino delle credenziali.
Come funziona
Puoi utilizzare Restore Credentials per creare, ottenere e cancellare le credenziali pertinenti.
- Crea la credenziale di ripristino: quando l'utente accede alla tua app, crea una credenziale di ripristino associata al suo account. Questa credenziale viene archiviata localmente e sincronizzata con il cloud se l'utente ha attivato il backup Google e la crittografia end-to-end è disponibile (le app possono disattivare la sincronizzazione con il cloud).
- Ottieni la credenziale di ripristino: quando l'utente configura un nuovo dispositivo, la tua app può richiedere la credenziale di ripristino a Gestione credenziali. In questo modo puoi far accedere automaticamente l'utente senza richiedere ulteriori input.
- Cancella la credenziale di ripristino: quando l'utente esce dalla tua app, devi eliminare la credenziale di ripristino associata.
La funzionalità Ripristina credenziali può integrarsi facilmente con i sistemi di backend che hanno già implementato le passkey. Questa compatibilità deriva dal fatto che sia le passkey sia le chiavi di ripristino (tipo di credenziali utilizzato dalla funzionalità Ripristina credenziali) rispettano le stesse specifiche tecniche di base. Questo allineamento garantisce che la procedura di ripristino delle credenziali possa recuperare e reintegrare in modo efficace le credenziali utente memorizzate nei sistemi abilitati alle passkey, fornendo un'esperienza coerente e intuitiva su diverse piattaforme e metodi di autenticazione.
Implementazione
L'API Restore Credentials è disponibile tramite la libreria Jetpack di Gestione credenziali. Per iniziare, procedi nel seguente modo:
Aggiungi la dipendenza Credential Manager al tuo progetto.
// build.gradle.kts implementation("androidx.credentials:credentials:1.5.0-alpha03")
Crea un oggetto
CreateRestoreCredentialRequest
.Chiama il metodo
createCredential()
sull'oggettoCredentialManager
.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)
Questa credenziale di ripristino generata è un tipo di credenziale WebAuthn ed è nota come chiave di ripristino.
Quando l'utente configura un nuovo dispositivo, chiama il metodo
getCredential()
sull'oggettoCredentialManager
.// 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)
Quando l'utente esce dalla tua app, chiama il metodo
clearCredentialState()
sull'oggettoCredentialManager
.// Create a ClearCredentialStateRequest object val clearRequest = ClearCredentialStateRequest(TYPE_CLEAR_RESTORE_CREDENTIAL) // On user log-out, clear the restore key val response = credentialManager.clearCredentialState(clearRequest)
Se utilizzi un agente di backup, esegui la parte getCredential
all'interno del
callback onRestore
. In questo modo, le credenziali dell'app vengono ripristinate
immediatamente dopo il ripristino dei dati dell'app.