Pahami peran API Web Bluetooth untuk passkeys! Pelajari bagaimana deteksi ketersediaan Bluetooth meningkatkan Autentikasi Lintas Perangkat (CDA) dengan WebAuthn.
Vincent
Created: August 8, 2025
Updated: August 8, 2025
See the original blog version in English here.
Our mission is to make the Internet a safer place, and the new login standard passkeys provides a superior solution to achieve that. That's why we want to help you understand passkeys and its characteristics better.
Passkeys adalah standar login baru di web. Salah satu fitur inti passkey adalah Autentikasi Lintas Perangkat (CDA) melalui Bluetooth dan Kode QR. Dalam konteks ini, ada satu API web lain yang menjadi penting: API Web Bluetooth.
Dengan memungkinkan aplikasi web berinteraksi langsung dengan perangkat Bluetooth, API Web Bluetooth memainkan peran penting dalam memastikan proses autentikasi yang aman dan efisien (terutama untuk CDA).
Postingan blog ini akan menyajikan cara kerja API Web Bluetooth dan mengeksplorasi implikasi deteksi Bluetooth untuk autentikasi passkey. Kita ingin menjawab pertanyaan-pertanyaan berikut:
API Web Bluetooth adalah antarmuka JavaScript yang memungkinkan aplikasi web mengakses dan berkomunikasi dengan perangkat Bluetooth. API ini merupakan bagian dari standar HTML5 dan didukung oleh browser seperti Chrome, Edge, dan Opera. API ini memungkinkan aplikasi web untuk:
Ada tiga fungsi utama dari API Web Bluetooth.
getAvailability()
mengembalikan promise yang menghasilkan nilai Boolean yang menunjukkan apakah user agent dapat mendukung Bluetooth (artinya perangkat memiliki modul Bluetooth). Beberapa user agent memungkinkan pengguna mengonfigurasi opsi yang menentukan nilai apa yang dikembalikan oleh metode ini.
navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("This device supports Bluetooth!"); } else { console.log("Doh! Bluetooth is not supported"); } });
getDevices()
mengembalikan promise yang menghasilkan array BluetoothDevices
yang diizinkan untuk diakses oleh origin (termasuk yang berada di luar jangkauan dan dimatikan). Izin diperoleh melalui panggilan sebelumnya ke Bluetooth.requestDevice()
.
navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Device:", device.name); }); });
requestDevice()
mengembalikan promise ke objek BluetoothDevice
dengan opsi yang ditentukan. Jika tidak ada UI pemilih, metode ini mengembalikan perangkat pertama yang cocok dengan kriteria.
navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Device:", device.name); }) .catch((error) => { console.log("Error:", error); });
Detail dan cuplikan kode dapat ditemukan di sini. Temukan juga standar W3C untuk Web Bluetooth di sini.
navigator.bluetooth.requestDevice
harus dipicu oleh gestur pengguna, seperti sentuhan atau klik mouse, untuk alasan keamanan.Untuk memeriksa dukungan API Web Bluetooth, Anda dapat melakukannya melalui kode berikut:
if ("bluetooth" in navigator) { // Web Bluetooth API is supported console.log("Web Bluetooth is supported!"); } else { // Web Bluetooth API is not supported console.log("Web Bluetooth is not supported!"); }
Cara memanggil fungsi-fungsi spesifik telah dijelaskan di atas.
API Web Bluetooth menawarkan beberapa keuntungan bagi pengembang dan pengguna:
Terlepas dari manfaatnya, API Web Bluetooth memiliki beberapa keterbatasan:
getAvailability()
mengembalikan nilai false meskipun adaptor Bluetooth ada. Ini dikontrol melalui Permissions-Policy:Bluetooth
. Demikian pula, bahkan jika getAvailability()
mengembalikan nilai true, adaptor Bluetooth mungkin tidak dinyalakan, atau pengguna mungkin menolak izin untuk menggunakan API saat diminta.Adopsi API Web Bluetooth masih terus berkembang. Per Juni 2024, menurut Can I Use, 76,53% pengguna global memiliki perangkat dengan dukungan untuk API Web Bluetooth.
Namun, kurangnya dukungan di Safari dan Firefox tetap menjadi kendala signifikan, yang memengaruhi pengalaman pengguna di browser tersebut. Selain itu, beberapa fitur (misalnya, Bluetooth.getDevices()
) harus diaktifkan secara eksplisit oleh pengguna, yang bisa menjadi tantangan untuk menggunakan API di latar belakang.
Temukan data terbaru di: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility
Ada satu alasan utama mengapa relying party harus mengetahui ketersediaan Bluetooth, ketika mereka ingin menawarkan passkeys di situs web dan aplikasi mereka.
Salah satu fitur baru dan inovatif dari passkeys adalah Autentikasi Lintas Perangkat (CDA) – juga dikenal sebagai autentikasi hibrida. Fitur ini memungkinkan pengguna untuk melakukan autentikasi di satu perangkat (biasanya desktop atau laptop) menggunakan perangkat seluler mereka melalui kode QR dan Bluetooth. Metode autentikasi hibrida ini meningkatkan keamanan dan kenyamanan, memberikan pengalaman pengguna yang mulus. Sebagian besar pengguna non-teknis saat ini sudah terbiasa memindai kode QR, baik selama pandemi COVID untuk registrasi maupun melalui aplikasi pesan mobile-first yang kemudian menambahkan dukungan desktop (misalnya, WhatsApp atau Telegram).
Memutuskan strategi CDA sangat penting di awal setiap proyek passkey. Semakin Anda mengandalkan CDA, semakin baik dukungan dan keandalannya. Oleh karena itu, mendeteksi ketersediaan Bluetooth pada perangkat menjadi sangat penting.
Namun, tidak semua perangkat memiliki kemampuan Bluetooth atau mungkin Bluetooth-nya dimatikan. Bagi relying party yang menawarkan passkeys, penting untuk mendeteksi ketersediaan Bluetooth untuk menentukan apakah CDA dapat digunakan atau jika metode autentikasi cadangan lain diperlukan. API Web Bluetooth memberikan solusi dengan memungkinkan aplikasi web memeriksa ketersediaan Bluetooth pada perangkat pengguna.
Harap diingat bahwa CDA tidak selalu stabil, terkadang gagal terhubung tanpa alasan yang jelas. Selain itu, karena API ini masih baru, terkadang hasil yang salah dikembalikan oleh API.
Tidak tersedianya API Web Bluetooth di Firefox dan Safari menjadi masalah, terutama untuk Firefox.
Safari tidak terlalu menjadi masalah karena perangkat macOS, tempat CDA mungkin dilakukan, telah memiliki Bluetooth bawaan sejak model-model awal. Namun, jika Bluetooth di macOS tidak berfungsi, pengguna mungkin mengalami masalah dengan autentikasi lintas perangkat dan perlu memecahkan masalah pengaturan mereka atau kembali ke metode cadangan. iPhone yang menjalankan Safari telah memiliki Bluetooth bawaan sejak awal.
Namun, Firefox menjadi masalah signifikan karena populer di perangkat Windows. Jika pengguna menggunakan Firefox dan ingin menggunakan CDA, relying party tidak dapat secara andal menentukan apakah Bluetooth tersedia, karena API Web Bluetooth tidak diimplementasikan. Hal ini dapat mengakibatkan pengalaman pengguna yang buruk, dengan pengguna berpotensi terjebak di titik-titik tertentu tanpa tahu harus berbuat apa.
Seperti yang telah kita lihat di blog-blog sebelumnya, perangkat Windows juga tertinggal dalam hal adopsi passkey (lihat juga State of Passkeys). Mari kita lihat seberapa umum ketersediaan Bluetooth.
Windows 10 tidak memiliki persyaratan Bluetooth yang ketat, tetapi sebagian besar laptop dan desktop modern dilengkapi dengan kemampuan Bluetooth. Namun, pengguna mungkin mematikannya, atau mungkin tidak tersedia di beberapa konfigurasi, terutama pada desktop rakitan.
Windows 11, mirip dengan Windows 10, tidak mewajibkan Bluetooth. Namun, tren menuju perangkat keras yang lebih terintegrasi dan modern berarti sebagian besar perangkat yang kompatibel dengan Windows 11 kemungkinan besar akan memiliki kemampuan Bluetooth. Namun, pengguna dapat menonaktifkannya, yang memengaruhi implementasi CDA.
Pada tabel berikut, Anda dapat melihat apakah Anda dapat menentukan apakah perangkat desktop siap Bluetooth dan dengan demikian dapat digunakan sebagai klien CDA:
Sistem operasi | Dukungan Perangkat Keras Bluetooth | Deteksi Bluetooth Browser | |||
---|---|---|---|---|---|
Chrome | Edge | Firefox | Safari | ||
Windows 10 | rendah | ✅ | ✅ | ❌ | ❌ |
Windows 11 | sedang | ✅ | ✅ | ❌ | ❌ |
macOS | tinggi | ✅ | ❌ | ❌ | ❌ |
Perlu diingat bahwa meskipun perangkat keras Anda siap Bluetooth, fungsionalitas Bluetooth mungkin dimatikan oleh pengguna. Ketika Bluetooth dimatikan, pengguna masih dapat menggunakan CDA karena pengguna masih dapat memilih untuk mengaktifkannya, yang berfungsi untuk Windows dan Mac: Permintaan macOS untuk menyalakan Bluetooth
Permintaan Windows 11 untuk menyalakan Bluetooth
Informasi ketersediaan Bluetooth sangat menarik pada Windows 10 dan Windows 11, di mana dukungan Bluetooth lebih rendah dan ada kemungkinan sangat tinggi autentikasi lintas perangkat perlu terjadi (dalam login berbasis passkey). Perangkat macOS terbaru semuanya memiliki dukungan untuk Bluetooth. Perangkat macOS ini berpotensi juga memiliki akses langsung ke passkeys yang disimpan di iCloud Keychain, jadi tidak perlu dikhawatirkan.
Di Windows 10 dan Windows 11: Gunakan getAvailability()
untuk mengetahui apakah Bluetooth dapat berfungsi. Jika pengguna hanya memiliki passkeys non-Windows, Anda dapat segera beralih ke opsi autentikasi lain.
Dalam situasi di mana hanya tersedia passkeys hibrida, memicu autentikasi passkey tidak akan menghasilkan autentikasi yang berhasil, melainkan jalan buntu bagi pengguna. Untuk semua browser lain di Windows 10 dan Windows 11, sayangnya, tidak ada cara lain untuk mengetahui apakah ada dukungan untuk CDA.
API Web Bluetooth merupakan alat yang ampuh untuk meningkatkan autentikasi passkey melalui kemampuan Bluetooth. Dengan memahami dan memanfaatkan API ini, pengembang dapat menciptakan metode autentikasi yang lebih aman dan ramah pengguna. Namun, mereka juga harus menavigasi keterbatasannya dan memastikan mekanisme cadangan yang kuat untuk menjaga pengalaman pengguna yang mulus di berbagai browser dan perangkat.
Dengan postingan blog ini, kami telah memberikan jawaban atas tiga pertanyaan inti:
getAvailability()
, getDevices()
, dan requestDevice()
untuk memeriksa dukungan Bluetooth, mendaftar perangkat yang dapat diakses, dan meminta pairing perangkat.Untuk informasi lebih lanjut mengenai API Web Bluetooth dan kumpulan contoh, silakan klik di sini.
Enjoyed this read?
🤝 Join our Passkeys Community
Share passkeys implementation tips and get support to free the world from passwords.
🚀 Subscribe to Substack
Get the latest news, strategies, and insights about passkeys sent straight to your inbox.
Related Articles
Table of Contents