Dipublikasikan: 4 September 2024, Terakhir diperbarui: 16 Oktober 2024
Uji coba origin untuk Digital Credentials API dimulai dari Chrome 128. Digital Credentials API adalah API platform web baru yang memungkinkan situs meminta informasi yang dapat diverifikasi tentang pengguna secara selektif melalui kredensial digital seperti surat izin mengemudi atau kartu tanda pengenal nasional yang disimpan di dompet digital.
Latar belakang
Identitas digital dunia nyata menjadi kenyataan dengan banyak entitas publik dan swasta mulai menerbitkan kredensial digital yang terikat perangkat. Misalnya, surat izin mengemudi dan tanda pengenal seluler di negara bagian AS tertentu (seperti Arizona, California, Colorado, Georgia, dan Maryland) kini dapat disediakan ke aplikasi dompet digital seperti Google Wallet di perangkat seluler. Peraturan terkait penerimaan kredensial digital untuk verifikasi online tertentu juga muncul dan eIDAS 2.0 adalah salah satu contohnya.
Fitur kredensial digital bergantung pada formatnya, meskipun biasanya meliputi:
- Keamanan dan privasi yang ditingkatkan: Penggunaan enkripsi lanjutan dan metode autentikasi yang kuat membantu melindungi data sensitif dan memastikan akses yang aman. Misalnya, memberikan kredensial biasanya dilindungi dengan autentikasi pengguna melalui aplikasi wallet.
- Pengungkapan selektif: Pihak yang dipercaya (RP) dapat meminta informasi tertentu dari kredensial, sehingga pengguna dapat membatasi data yang dibagikan hanya untuk hal yang diperlukan dalam kasus penggunaan. Misalnya, apakah pengguna berusia di atas 18 tahun dapat dibagikan tanpa mengungkapkan tanggal lahir pengguna.
- Interoperabilitas: Kredensial harus mematuhi standar internasional, sehingga memungkinkan kompatibilitas di berbagai sistem dan negara, serta memfasilitasi penerimaan lintas batas.
- Verifiabilitas: Data kredensial yang dibagikan ditandatangani secara digital oleh penerbit; RP dapat memverifikasi tanda tangan ini untuk memverifikasi keaslian data.
Karena kredensial digital bersifat dapat diverifikasi, hal tersebut dapat memungkinkan kasus penggunaan seperti:
- Verifikasi usia: Meminta usia untuk memverifikasi usia seseorang sebelum menayangkan konten yang dikenai pembatasan usia atau membeli item yang dikenai pembatasan usia.
- Verifikasi identitas: Minta nama dan alamat untuk memverifikasi identitas seseorang demi kepatuhan hukum atau pencegahan penipuan.
- Pemeriksaan hak mengemudi: Memverifikasi kelayakan seseorang untuk mengemudi (misalnya, saat menyewa mobil).
Seiring situs mulai berkomunikasi langsung dengan aplikasi dompet seluler (seperti menggunakan skema URL kustom) guna meminta kredensial digital untuk berbagai kasus penggunaan, browser melihat peluang untuk membuat interaksi ini lebih aman, tahan terhadap penyalahgunaan, dan lebih mudah digunakan melalui API yang dibuat khusus.
Memperkenalkan Digital Credentials API
Digital Credentials API adalah API platform web baru yang memungkinkan situs RP meminta presentasi kredensial digital dari aplikasi dompet. API ini tersedia di Chrome sebagai uji coba origin mulai dari Chrome 128.
API ini tidak bergantung pada protokol, sehingga RP dapat menentukan protokol berdasarkan persyaratannya. Ketika RP membuat permintaan, browser mengirimkan permintaan ke sistem operasi seluler yang mencari kredensial yang cocok dalam aplikasi wallet yang terinstal. Jika ada yang ditemukan, sistem operasi seluler akan meminta pengguna untuk memilih salah satunya dan mengirimkan permintaan ke dompet yang dipilih pengguna. Setelah autentikasi lokal, wallet menampilkan respons yang berisi data kredensial yang diminta.
Chrome terlebih dahulu akan mendukung API di Chrome di Android untuk meminta kredensial dari aplikasi dompet di perangkat yang sama. Ke depannya, kami berencana mendukung desktop Chrome untuk meminta kredensial lintas perangkat dari perangkat seluler lain.
Saat peluncuran, Google Wallet akan terintegrasi dengan Digital Credentials API, sehingga bisnis dan organisasi tertentu dapat memulai permintaan agar pengguna menunjukkan tanda pengenal mereka secara online, melalui Chrome di Android, dan memverifikasi keaslian data yang dikirim dengan memeriksa tanda tangan kriptografis. Untuk berpartisipasi, isi formulir ini untuk menyatakan minat Anda dalam menerima tanda pengenal digital dari Google Wallet.
API ini juga akan segera digunakan oleh Akun Google untuk memverifikasi tanggal lahir pengguna tertentu. Pengguna yang tinggal di negara bagian AS yang didukung akan dapat menggunakan tanda pengenal negara bagian atau surat izin mengemudi yang disediakan di aplikasi dompet yang tersedia (termasuk Google Wallet) untuk membagikan tanggal lahir mereka dengan lancar kepada Google tanpa membagikan detail identitas mereka yang lain. Hal ini memungkinkan pengguna menunjukkan kepada Google, dengan cara yang menjaga privasi, bahwa mereka memenuhi persyaratan usia terkait akun.
Cobalah
Persyaratan:
- Layanan Google Play 23.40 atau yang lebih baru
- Chrome 128 atau yang lebih baru
- Aktifkan tanda di
chrome://flags#web-identity-digital-credentials
Untuk mencoba Digital Credentials API, ikuti petunjuk berikut:
- Instal aplikasi dompet demo dengan mengikuti petunjuknya.
- Download aplikasi wallet demo ke perangkat Android Anda. Kode sumber dapat ditemukan di repositori Kredensial Identitas OpenWallet Foundation.
- Jalankan perintah
adb install -t <path-to-apk>
untuk menginstal aplikasi.
- Luncurkan aplikasi IC Wallet dan sediakan surat izin mengemudi digital
(mDL) demo.
- Ketuk tombol menu, lalu pilih Tambahkan Dokumen yang Ditandatangani Sendiri.
- Buka https://digital-credentials.dev dengan Chrome 128 atau yang lebih baru.
- Tekan Minta Kredensial (OpenID4VP).
Lihat demo yang menggunakan https://digital-credentials.dev, situs pengujian bagi developer untuk membuat permintaan kredensial untuk berbagai atribut:
Berikut cara kerja demo langkah demi langkah:
Cara kerja API
Digital Credentials API dibuat berdasarkan fondasi Credential Management API, tetapi dari platform API independen: navigator.identity
. Dengan memanggil navigator.identity.get()
, situs dapat meminta kredensial digital yang disimpan di aplikasi dompet seluler.
// Gets a CBOR with specific fields out of mobile driver's license as an mdoc
const controller = new AbortController();
const {protocol, data} = await navigator.identity.get({
signal: controller.signal,
digital: {
providers: [{
protocol: "openid4vp",
request: {
response_type: "vp_token",
nonce: "n-0S6_WzA2Mj",
client_metadata: {...},
presentation_definition: {...}
}
}],
}
});
Platform API dasar mirip dengan navigator.credentials.get()
, kecuali bahwa platform ini hanya menerima jenis kredensial "digital"
. Dalam jenis kredensial digital, tambahkan array providers
yang berisi IdentityRequestProvider
dengan parameter dasar berikut:
protocol
: Menentukan protokol pertukaran dengan string. Pada saat uji coba origin, protokol utama yang sedang dikembangkan adalah"openid4vp"
.request
: Isi parameter yang diterima aplikasi dompet digital untuk protokol yang ditentukan. Untuk"openid4vp"
, parameter ditentukan dalam spesifikasi OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API.
Contoh payload ke jenis kredensial digital menggunakan OID4VP:
{
protocol: 'openid4vp',
request: {
response_type: 'vp_token',
nonce: 'gf69kepV+m5tGxUIsFtLi6pwg=',
client_metadata: {},
presentation_definition: {
id: 'mDL-request-demo',
input_descriptors: [{
id: "org.iso.18013.5.1.mDL",
format: {
mso_mdoc: {
alg: ["ES256"]
}
},
constraints: {
limit_disclosure: "required",
fields: [
{
path: ["$['org.iso.18013.5.1']['family_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['given_name']"],
intent_to_retain: false
}, {
path: ["$['org.iso.18013.5.1']['age_over_21']"],
intent_to_retain: false
}
]
}
}],
}
}
}
Dengan permintaan ini, dompet yang memiliki mDL di perangkat akan memberikan kumpulan kredensial yang dapat diverifikasi yang berisi:
- Nama belakang pengguna.
- Nama depan pengguna.
- Nilai boolean yang menunjukkan apakah pengguna berusia di atas 21 tahun atau tidak.
Berikut adalah contoh payload respons:
{
data: '{\n "vp_token": "o2d2ZXJzaW9uYz..."\n}'
id: '',
protocol: 'openid4vp',
type: 'digital'
}
Dalam contoh ini, kredensial diminta dengan protokol "openid4vp"
dan respons berisi "vp_token"
di properti data
. Lihat spesifikasi OpenID for Verifiable Presentation (OID4VP) for the W3C Digital Credentials API untuk mempelajari cara mengurai respons dan memverifikasi kredensial.
Digital Credentials API didukung di Chrome di Android sebagai uji coba origin. Chrome di desktop dan iOS saat ini tidak mendukungnya. Untuk mesin browser lainnya, percakapan aktif difasilitasi melalui Grup Komunitas Inkubator Web W3C.
Berpartisipasi dalam uji coba asal
Untuk pengembangan, Anda dapat mengaktifkan Digital Credentials API secara lokal dengan mengaktifkan tanda Chrome chrome://flags#web-identity-digital-credentials
di Chrome 128 atau yang lebih baru.
Fitur ini juga tersedia sebagai uji coba origin. Uji coba origin memungkinkan Anda mencoba berbagai fitur baru dan memberikan masukan terkait kegunaan, kepraktisan, serta efektivitasnya kepada komunitas standar web. Untuk informasi selengkapnya, lihat Memulai uji coba origin. Untuk mendaftar ke uji coba asal ini atau uji coba asal lainnya, buka halaman pendaftaran.
- Minta token untuk origin Anda.
- Tambahkan token ke halaman Anda. Ada dua cara untuk melakukannya:
- Tambahkan tag
origin-trial
<meta>
ke header setiap halaman. Misalnya, tampilannya mungkin terlihat seperti ini:<meta http-equiv="origin-trial" content="TOKEN_GOES_HERE">.
- Jika dapat mengonfigurasi server, Anda juga dapat menambahkan token menggunakan header HTTP
Origin-Trial
. Header respons yang dihasilkan akan terlihat seperti ini:Origin-Trial: TOKEN_GOES_HERE.
- Tambahkan tag
Berikan masukan
Jika Anda memiliki masukan tentang Digital Credentials API, kirimkan ke issue tracker Chromium khusus.