Memulihkan kredensial aplikasi saat menyiapkan perangkat baru

Fitur Pulihkan Kredensial Pengelola Kredensial memungkinkan pengguna memulihkan akun aplikasi mereka saat menyiapkan perangkat baru. API ini dalam pratinjau developer dan tersedia di semua perangkat yang memiliki Android 9 atau yang lebih tinggi dan Layanan Google Play (GMS) Core versi 242200000 atau yang lebih tinggi. Manfaat fitur Pulihkan Kredensial meliputi:

  • Pengalaman pengguna yang lancar: Pengguna dapat memulihkan akun aplikasi mereka tanpa perlu login ke setiap aplikasi secara manual.
  • Peningkatan interaksi pengguna: Pengguna cenderung akan terus menggunakan aplikasi Anda jika mereka dapat memulihkan akun saat menyiapkan perangkat baru.
  • Mengurangi upaya pengembangan: fitur Pulihkan Kredensial terintegrasi dengan Pengelola Kredensial, sehingga developer yang sudah mendukung kunci sandi dapat menambahkan kemampuan pemulihan kredensial.

Cara kerjanya

Anda dapat menggunakan Pulihkan Kredensial untuk membuat, mendapatkan, dan menghapus kredensial yang relevan.

  1. Buat Kredensial Pemulihan: Saat pengguna login ke aplikasi Anda, buat Kredensial Pemulihan yang terkait dengan akunnya. Kredensial ini disimpan secara lokal dan disinkronkan ke cloud jika pengguna telah mengaktifkan Pencadangan Google dan enkripsi end-to-end tersedia (aplikasi dapat memilih untuk tidak menyinkronkan ke cloud)
  2. Mendapatkan Kredensial Pemulihan: Saat pengguna menyiapkan perangkat baru, aplikasi Anda dapat meminta Kredensial Pemulihan dari Pengelola Kredensial. Hal ini memungkinkan Anda membuat pengguna login secara otomatis tanpa memerlukan input tambahan.
  3. Hapus Kredensial Pemulihan: Saat pengguna logout dari aplikasi Anda, Anda harus menghapus Kredensial Pemulihan terkait.

Fitur Kredensial Pemulihan dapat terintegrasi dengan lancar dengan sistem backend yang telah menerapkan kunci sandi. Kompatibilitas ini berasal dari fakta bahwa kunci sandi dan kunci pemulihan (jenis kredensial yang digunakan oleh fitur Pulihkan Kredensial) mematuhi spesifikasi teknis mendasari yang sama. Penyelarasan ini memastikan bahwa proses Pulihkan Kredensial dapat mengambil dan mengaktifkan kembali kredensial pengguna yang disimpan di sistem yang mengaktifkan kunci sandi secara efektif, sehingga memberikan pengalaman yang konsisten dan mudah digunakan di berbagai platform dan metode autentikasi.

Sheet bawah Pengelola Kredensial
Gambar 1. Diagram yang menggambarkan pemulihan data aplikasi ke perangkat baru menggunakan kredensial pemulihan, termasuk membuat kredensial, memulai alur pemulihan, dan login otomatis pengguna

Implementasi

Restore Credentials API tersedia melalui library Jetpack Pengelola Kredensial. Untuk memulai, ikuti langkah-langkah ini:

  1. Tambahkan dependensi Pengelola Kredensial ke project Anda.

    // build.gradle.kts
    implementation("androidx.credentials:credentials:1.5.0-alpha03")
    
  2. Buat objek CreateRestoreCredentialRequest.

  3. Panggil metode createCredential() pada objek 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)
    

    Kredensial pemulihan yang dihasilkan ini adalah jenis kredensial webauthn, dan dikenal sebagai kunci pemulihan.

  4. Saat pengguna menyiapkan perangkat baru, panggil metode getCredential() pada objek 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. Saat pengguna logout dari aplikasi Anda, panggil metode clearCredentialState() pada objek 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)
    

Jika Anda menggunakan agen pencadangan, lakukan bagian getCredential dalam callback onRestore. Hal ini memastikan kredensial aplikasi dipulihkan segera setelah data aplikasi dipulihkan.