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 yang berkaitan dengan 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 mencakup:
- Keamanan dan privasi yang ditingkatkan: Penggunaan enkripsi lanjutan dan metode autentikasi yang kuat membantu melindungi data sensitif dan memastikan akses yang aman. Misalnya, menampilkan kredensial biasanya dilindungi di balik autentikasi pengguna melalui aplikasi dompet.
- Pengungkapan selektif: Pihak tepercaya (RP) dapat meminta informasi tertentu dari kredensial, sehingga pengguna dapat membatasi data yang dibagikan ke data yang diperlukan untuk 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 sifatnya yang dapat diverifikasi, kredensial digital 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: Meminta nama dan alamat untuk memverifikasi identitas seseorang guna mematuhi hukum atau mencegah penipuan.
- Pemeriksaan hak mengemudi: Memverifikasi kelayakan seseorang untuk mengemudi (misalnya, saat menyewa mobil).
Karena situs telah mulai berkomunikasi langsung dengan aplikasi dompet seluler (seperti dengan menggunakan skema URL kustom) untuk 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 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. Saat RP membuat permintaan, browser akan mengirimkan permintaan tersebut ke sistem operasi seluler yang menelusuri kredensial yang cocok di aplikasi dompet yang diinstal. 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, dompet akan menampilkan respons yang berisi data kredensial yang diminta.
Chrome akan mendukung API di Chrome di Android terlebih dahulu untuk meminta kredensial dari aplikasi dompet di perangkat yang sama. Ke depannya, kami berencana mendukung Chrome desktop untuk meminta kredensial lintas perangkat dari perangkat seluler lain.
Saat peluncuran, Google Wallet akan terintegrasi dengan Digital Credentials API, yang memungkinkan bisnis dan organisasi tertentu untuk 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 Google tanpa membagikan detail identitas lainnya dengan lancar. 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 (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 flag 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 fitur baru dan memberikan masukan tentang kegunaan, kepraktisan, dan 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.