Credential Manager - Holder API memungkinkan aplikasi Android mengelola dan menampilkan kredensial digital kepada verifier.
Memulai
Untuk menggunakan Credential Manager - Holder API, tambahkan dependensi berikut ke skrip build modul aplikasi Anda:
// In your app module's build.gradle:
dependencies {
implementation(libs.androidx.registry.provider)
implementation(libs.androidx.registry.provider.play.services)
}
// In libs.versions.toml:
registryDigitalCredentials = "1.0.0-alpha01"
androidx-registry-provider = { module = "androidx.credentials.registry:registry-provider", version.ref = "registryDigitalCredentials" }
androidx-registry-provider-play-services = { module = "androidx.credentials.registry:registry-provider-play-services", version.ref = "registryDigitalCredentials" }
Mendaftarkan kredensial dengan Pengelola Kredensial
Wallet perlu mendaftarkan metadata kredensial agar Pengelola Kredensial dapat memfilter dan menampilkannya di pemilih kredensial saat permintaan masuk.

UI Pemilih Credential Manager
Format untuk metadata ini diteruskan ke RegisterCredentialsRequest
.
Buat [RegistryManager][1]
dan daftarkan kredensial:
Dalam contoh ini, metadata dikompilasi dari database entri kredensial. Anda dapat menemukan referensi di dompet contoh kami yang mendaftarkan metadata saat aplikasi dimuat. Pada masa mendatang, komposisi database kredensial akan didukung oleh Jetpack API. Pada saat itu, Anda dapat mendaftarkan metadata kredensial sebagai struktur data yang terdefinisi dengan baik.
Registri tetap ada saat perangkat dimulai ulang. Mendaftarkan ulang registry yang sama dengan ID + jenis yang sama akan menimpa catatan registry sebelumnya. Oleh karena itu, Anda hanya perlu mendaftar ulang saat data kredensial Anda telah berubah.
Opsional: Buat pencocok
Credential Manager bersifat agnostik terhadap protokol; Credential Manager memperlakukan registry metadata sebagai blob buram dan tidak memverifikasi atau memeriksa isinya. Oleh karena itu, dompet harus menyediakan pencocok, yaitu biner yang dapat dijalankan yang dapat memproses data dompet itu sendiri dan membuat metadata tampilan berdasarkan permintaan yang masuk. Credential Manager akan menjalankan pencocokan di lingkungan sandbox tanpa akses jaringan atau disk, sehingga tidak ada yang bocor ke dompet sebelum UI dirender kepada pengguna.
Credential Manager API akan menyediakan pencocok untuk protokol populer, saat ini OpenID4VP. Fitur ini belum dirilis secara resmi, jadi untuk saat ini gunakan pencocokan sampel kami untuk protokol OpenID4VP.
Menangani kredensial yang dipilih
Selanjutnya, dompet perlu menangani saat kredensial dipilih oleh pengguna. Anda
dapat menentukan Aktivitas yang memproses
filter intent androidx.credentials.registry.provider.action.GET_CREDENTIAL
.
Contoh dompet kami menunjukkan prosedur ini.
Intent yang meluncurkan aktivitas akan berisi permintaan Verifier dan
asal panggilan, yang dapat diekstrak dengan fungsi
PendingIntentHandler.retrieveProviderGetCredentialRequest
. API menampilkan ProviderGetCredentialRequest
yang berisi semua informasi yang terkait dengan permintaan verifikasi tertentu. Ada tiga komponen utama:
- Aplikasi yang membuat permintaan. Anda dapat mengambilnya dengan
getCallingAppInfo
. - Kredensial yang dipilih. Anda bisa mendapatkan informasi tentang kandidat yang dipilih pengguna melalui metode ekstensi
selectedEntryId
; hal ini akan cocok dengan ID kredensial yang Anda daftarkan. - Permintaan spesifik yang diajukan oleh verifikator. Anda bisa mendapatkan ini dari metode
getCredentialOptions
. Dalam hal ini, Anda akan menemukanGetDigitalCredentialOption
dalam daftar ini, yang berisi permintaan Kredensial Digital.
Biasanya, pemverifikasi akan membuat permintaan presentasi kredensial digital sehingga Anda dapat memprosesnya dengan contoh kode berikut:
request.credentialOptions.forEach { option ->
if (option is GetDigitalCredentialOption) {
Log.i(TAG, "Got DC request: ${option.requestJson}")
processRequest(option.requestJson)
}
}
Anda dapat melihat contohnya di dompet contoh kami.
Merender UI dompet
Setelah kredensial dipilih, dompet akan dipanggil dan pengguna akan diarahkan melalui UI-nya. Dalam contoh, ini adalah dialog biometrik.
Menampilkan respons kredensial
Setelah dompet siap mengirim kembali hasilnya, Anda dapat melakukannya dengan menyelesaikan aktivitas dengan respons kredensial:
PendingIntentHandler.setGetCredentialResponse(
resultData,
GetCredentialResponse(DigitalCredential(response.responseJson))
)
setResult(RESULT_OK, resultData)
finish()
Jika ada pengecualian, Anda dapat mengirim pengecualian kredensial dengan cara yang sama:
PendingIntentHandler.setGetCredentialException(
resultData,
GetCredentialUnknownException() // Configure the proper exception
)
setResult(RESULT_OK, resultData)
finish()
Lihat aplikasi contoh untuk mengetahui contoh cara menampilkan respons kredensial dalam konteks.