Online
ID digital dapat diterima di alur dalam aplikasi dan web. Untuk menerima kredensial dari Google Wallet, Anda harus:
- Integrasikan menggunakan aplikasi atau web dengan mengikuti petunjuk yang diberikan dan
- Isi formulir ini untuk meminta dan menyetujui persyaratan layanan penerimaan kredensial dari Google Wallet.
Prasyarat
Untuk menguji presentasi ID, Anda harus mendaftar ke program beta publik terlebih dahulu menggunakan akun pengujian yang diinginkan. Selanjutnya, berikan detail yang dihasilkan kepada kontak Google yang ditetapkan bagi Anda.
- Link Persyaratan Layanan
- Logo
- Situs
- ID paket Play Store (untuk integrasi aplikasi Android)
- ID Gmail yang digunakan untuk bergabung ke versi beta publik
Format Kredensial yang Didukung
Ada beberapa standar yang diusulkan yang menentukan format data dokumen identitas digital, dengan dua standar yang mendapatkan daya tarik industri yang signifikan:
- mdocs - ditentukan oleh ISO.
- Kredensial Verifikasi W3C - ditentukan oleh W3C.
Meskipun Pengelola Kredensial Android mendukung kedua format tersebut, Google Wallet hanya mendukung ID Digital berbasis mdoc untuk saat ini.
Pengalaman pengguna
Saat aplikasi meminta atribut identitas, proses berikut akan terjadi:
Penemuan Kredensial: Aplikasi membuat kueri pada dompet yang tersedia untuk mengidentifikasi kredensial yang dapat memenuhi permintaan. Android kemudian menampilkan pemilih UI sistem, yang menampilkan informasi yang akan dibagikan. Hal ini memungkinkan pengguna membuat keputusan yang tepat tentang kredensial yang akan digunakan.
Pemilihan Pengguna dan Interaksi Wallet: Pengguna memilih kredensial, dan Android memanggil aplikasi dompet yang sesuai untuk menyelesaikan transaksi. Aplikasi Wallet dapat menampilkan layar izinnya sendiri atau memerlukan konfirmasi biometrik.
Hasil: Jika pengguna mengizinkan, kredensial identitas yang dipilih akan dibagikan dengan aplikasi yang meminta. Jika pengguna menolak, pesan error akan muncul.
Dalam Aplikasi
Untuk meminta kredensial identitas dari aplikasi Android Anda, ikuti langkah-langkah berikut:
Memperbarui dependensi
Dalam build.gradle project, perbarui dependensi untuk menggunakan Pengelola Kredensial (beta):
dependencies {
implementation("androidx.credentials:credentials:1.5.0-alpha05")
// optional - needed for credentials support from play services, for devices running Android 13 and below.
implementation("androidx.credentials:credentials-play-services-auth:1.5.0-alpha05")
}
Mengonfigurasi Pengelola Kredensial
Untuk mengonfigurasi dan melakukan inisialisasi objek CredentialManager
, tambahkan logika yang mirip dengan berikut ini:
// Use your app or activity context to instantiate a client instance of CredentialManager.
val credentialManager = IdentityCredentialManager.Companion.getClient(context)
Meminta Atribut identitas
// Retrieves the user's digital identites from wallet apps for your app.
val getIdentityCredentialOption = GetDigitalCredentialOption(
requestJson = requestJson, // this is what partners needs to set, example JSON specified below
)
val result = credentialManager.getCredential(request = GetCredentialRequest(credentialOptions, ...)
Pemanggil aplikasi menyediakan semua parameter IdentityRequest sebagai string JSON. Di sini, parameter ini direpresentasikan sebagai param requestMatcher
dari CredentialOption. Pengelola Kredensial tidak terkait dengan konten json tersebut. Permintaan JSON ini akan diteruskan langsung ke wallet, yang kemudian bertanggung jawab untuk mengurainya dan memutuskan kredensial mana yang dapat memenuhi permintaan. Implementasi lengkapnya dapat ditemukan di aplikasi contoh.
Kami memperkirakan bahwa W3C akan menentukan permintaan JSON ini sebagai komponen API web. Standardisasi ini akan memungkinkan browser untuk langsung mengirimkan permintaan ke Android.
Untuk memberikan gambaran tentang tampilan permintaan tersebut, berikut adalah contoh permintaan mdoc:
{
"selector": {
"format": [
"mdoc"
],
"doctype": "org.iso.18013.5.1.mDL",
"fields": [
{
"namespace": "org.iso.18013.5.1",
"name": "family_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "given_name",
"intentToRetain": false
},
{
"namespace": "org.iso.18013.5.1",
"name": "age_over_21",
"intentToRetain": false
}
]
},
"nonce": "3cydsUF9xNFyBDAAWOct09hEeSqrFX2WB2r0G6f8Ol0=",
"readerPublicKey": "BApmGdElal2-1dtafsdHVRa1EpAWZfhlQj_iof2I8L3V8_dCK1gVR0_12E4ZSQ2LcqXRd4zxVeKEqU1wUSgGWUU="
}
Respons menampilkan identityToken (string JSON), yang ditentukan oleh W3C. Aplikasi Wallet bertanggung jawab untuk membuat respons ini.
Contoh:
{
"token": "<base64 encoded response>"
}
Mengirim token dan memprosesnya di server
Setelah menerima identityToken, aplikasi Anda harus mengirimkannya ke server aplikasi untuk diverifikasi. Langkah awal melibatkan dekode token dari format base64. Array byte yang dihasilkan mewakili data CBOR, yang mematuhi CDDL berikut.
CredentialDocument = {
"version": tstr, // Set to "ANDROID-HPKE-v1"
"pkEm": bstr, // Public key, in uncompressed form
"cipherText": bstr // The encrypted data
}
Langkah berikutnya adalah menghitung SessionTranscript dari ISO/IEC 18013-5:2021 dengan struktur Handover khusus Android:
SessionTranscript = [
null, // DeviceEngagementBytes not available
null, // EReaderKeyBytes not available
AndroidHandover // Defined below
]
AndroidHandover = [
"AndroidHandoverv1", // Version number
nonce, // nonce that comes from request
appId, // RP package name
pkRHash, // The SHA256 hash of the recipient public key
]
cipherText dienkripsi menggunakan enkripsi HPKE. Untuk mendekripsinya, gunakan SessionTranscript sebagai Data Autentikasi Tambahan, bersama dengan kunci pribadi EC yang dibuat sebelumnya, dan setelan berikut:
- KEM: DHKEM(P-256, HKDF-SHA256)
- KDF: HKDF-SHA256
- AEAD: AES-128-GCM
Cleartext yang dihasilkan adalah byte CBOR DeviceResponse seperti yang ditentukan dalam ISO/IEC 18013-5:2021. DeviceResponse harus divalidasi sesuai dengan klausul 9 ISO/IEC 18013-5:2021. Hal ini mencakup beberapa langkah, seperti memverifikasi bahwa mdoc berasal dari penerbit tepercaya dan bahwa respons ditandatangani oleh perangkat yang dimaksud. Class DeviceResponseParser dari project Kredensial Identitas OpenWallet Foundation dapat digunakan untuk bagian dari proses validasi ini.
Web
Untuk meminta Kredensial Identitas menggunakan Digital Credentials API di Chrome, Anda harus mendaftar ke uji coba origin Digital Credentials API.
Tatap Muka
Untuk menerima tanda pengenal dari Google Wallet, Anda harus melakukan langkah-langkah berikut:
- Buat atau dapatkan pembaca untuk menerima ID seperti yang ditentukan oleh ISO 18013-5
- Memuat sertifikat IACA ke pembaca untuk memastikan ID yang diterima bersifat autentik
- Menguji solusi Anda
- Mendaftarkan aplikasi Anda ke Google Wallet
Membuat atau memperoleh pembaca untuk menerima ID seperti yang ditentukan oleh ISO 18013-5
ID di Wallet diterapkan sesuai dengan standar ISO 18013-5 untuk lisensi pengemudi seluler. Keduanya menggunakan interaksi kode QR atau berbasis NFC bersama dengan BLE sebagai mekanisme transfer data - sehingga perangkat apa pun yang dapat menerapkan aspek standar tersebut dapat berfungsi sebagai pembaca, bahkan aplikasi seluler. Karena standar ini bersifat terbuka, ada beberapa penerapan pihak ketiga yang tersedia di pasar. Selain itu, Anda dapat langsung menerapkan fungsionalitasnya jika diperlukan.
Untuk panduan cara menerapkan fungsi ini sendiri, lihat aplikasi Android pembaca referensi open source kami, yang menerapkan standar ISO dan dapat menerima mDL dari Google Wallet.
Anda dapat memulai dengan mem-build dan menjalankan aplikasi pembaca referensi:
- Buat clone untuk repositori aplikasi referensi
- Buka project di Android Studio
- Bangun dan jalankan target
appverifier
di perangkat Android atau emulator Anda.
Memuat sertifikat IACA ke pembaca untuk memastikan ID yang diterima bersifat autentik
Untuk memvalidasi kredensial yang sebenarnya, Anda harus memiliki tanda pengenal di dompet dari penerbit yang didukung. Daftar penerbit yang didukung oleh Google Wallet diberikan di bawah ini beserta link ke sertifikat mereka untuk verifikasi.
Menguji solusi Anda
Untuk menguji solusi Anda, bangun dan jalankan aplikasi Android holder referensi open source kami. Berikut adalah langkah-langkah untuk mem-build dan menjalankan aplikasi holder referensi:
- Meng-clone repositori aplikasi referensi
- Buka project di Android Studio
- Bangun dan jalankan target
appholder
di perangkat Android atau emulator Anda.
(Opsional) Daftarkan aplikasi Anda ke Google Wallet
Daftarkan aplikasi Anda ke Google Wallet dengan mengisi formulir ini.