Scopri il ruolo dell'API Web Bluetooth per le passkey! Impara come il rilevamento della disponibilità del Bluetooth migliora l'autenticazione cross-device (CDA) con 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.
Le passkey sono il nuovo standard di login sul web. Una delle funzionalità principali delle passkey è l'autenticazione cross-device (CDA) tramite Bluetooth e codici QR. In questo contesto, un'altra API web diventa importante: l'API Web Bluetooth.
Consentendo alle app web di interagire direttamente con i dispositivi Bluetooth, l'API Web Bluetooth svolge un ruolo cruciale nel garantire processi di autenticazione sicuri ed efficienti (specialmente per la CDA).
Questo post del blog presenterà il funzionamento dell'API Web Bluetooth ed esplorerà le implicazioni del rilevamento del Bluetooth per l'autenticazione con passkey. Vogliamo rispondere alle seguenti domande:
L'API Web Bluetooth è un'interfaccia JavaScript che consente alle app web di accedere e comunicare con i dispositivi Bluetooth. Fa parte dello standard HTML5 ed è supportata da browser come Chrome, Edge e Opera. Questa API permette alle app web di:
Ci sono tre funzioni chiave dell'API Web Bluetooth.
getAvailability()
restituisce una promise che si risolve in un valore booleano, indicando se l'user agent può supportare il Bluetooth (quindi se il dispositivo ha un modulo Bluetooth). Alcuni user agent permettono all'utente di configurare un'opzione che specifica quale valore viene restituito da questo metodo.
navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("This device supports Bluetooth!"); } else { console.log("Doh! Bluetooth is not supported"); } });
getDevices()
restituisce una promise che si risolve in un array di BluetoothDevices
a cui l'origine è autorizzata ad accedere (inclusi quelli fuori portata e spenti). L'autorizzazione si ottiene tramite chiamate precedenti a Bluetooth.requestDevice()
.
navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Device:", device.name); }); });
requestDevice()
restituisce una promise a un oggetto BluetoothDevice
con le opzioni specificate. Se non c'è un'interfaccia utente per la scelta, questo metodo restituisce il primo dispositivo che corrisponde ai criteri.
navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Device:", device.name); }) .catch((error) => { console.log("Error:", error); });
Dettagli ed esempi di codice si possono trovare qui. Trovate qui anche lo standard W3C per il Web Bluetooth.
navigator.bluetooth.requestDevice
deve essere attivata da un gesto dell'utente, come un tocco o un clic del mouse, per motivi di sicurezza.Per verificare il supporto dell'API Web Bluetooth, si può usare il seguente codice:
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!"); }
Il modo in cui vengono chiamate le funzioni specifiche è spiegato sopra.
L'API Web Bluetooth offre diversi vantaggi per sviluppatori e utenti:
Nonostante i suoi vantaggi, l'API Web Bluetooth ha delle limitazioni:
getAvailability()
restituisca false
anche se è presente un adattatore Bluetooth. Questo è controllato tramite la Permissions-Policy:Bluetooth
. Allo stesso modo, anche se getAvailability()
restituisce true
, l'adattatore Bluetooth potrebbe non essere acceso, o gli utenti potrebbero negare il permesso di usare l'API quando richiesto.L'adozione dell'API Web Bluetooth è ancora in crescita. A giugno 2024, secondo Can I Use, il 76,53% degli utenti globali ha dispositivi con supporto per l'API Web Bluetooth.
Tuttavia, la mancanza di supporto in Safari e Firefox rimane un ostacolo significativo, che influisce sull'esperienza utente su questi browser. Inoltre, alcune delle funzionalità (ad es. Bluetooth.getDevices()
) devono essere attivate esplicitamente dall'utente, il che può rappresentare una sfida per l'utilizzo dell'API in background.
Trova i dati più recenti su: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility
C'è una ragione principale per cui le relying party dovrebbero conoscere la disponibilità del Bluetooth, quando vogliono offrire le passkey nei loro siti web e applicazioni.
Una delle nuove e innovative funzionalità delle passkey è l'autenticazione cross-device (CDA) – nota anche come autenticazione ibrida. Questa funzione consente agli utenti di autenticarsi su un dispositivo (tipicamente un desktop o un laptop) utilizzando i loro dispositivi mobili tramite codici QR e Bluetooth. Questo metodo di autenticazione ibrida migliora la sicurezza e la comodità, offrendo un'esperienza utente fluida. La maggior parte degli utenti non tecnici è ormai abituata a scansionare codici QR, sia durante la pandemia di COVID per la registrazione, sia tramite app di messaggistica mobile-first che hanno poi aggiunto il supporto desktop (ad es. WhatsApp o Telegram).
Decidere una strategia CDA è cruciale all'inizio di qualsiasi progetto di passkey. Più ci si affida alla CDA, migliori devono essere il suo supporto e la sua affidabilità. Pertanto, rilevare la disponibilità del Bluetooth su un dispositivo è essenziale.
Tuttavia, non tutti i dispositivi hanno funzionalità Bluetooth o potrebbero avere il Bluetooth disattivato. Per le relying party che offrono passkey, è essenziale rilevare la disponibilità del Bluetooth per determinare se la CDA può essere utilizzata o se è necessario un altro metodo di autenticazione di fallback. L'API Web Bluetooth fornisce una soluzione consentendo alle app web di verificare la disponibilità del Bluetooth sui dispositivi degli utenti.
Tenete presente che la CDA non è sempre stabile e occasionalmente la connessione può fallire senza ragioni apparenti. Inoltre, a causa della novità dell'API, a volte l'API restituisce risultati errati.
La non disponibilità dell'API Web Bluetooth in Firefox e Safari è un problema, in particolare per Firefox.
Safari è un problema minore perché i dispositivi macOS, dove potrebbe essere eseguita la CDA, hanno il Bluetooth integrato fin dai primi modelli. Tuttavia, se il Bluetooth su macOS non funziona, gli utenti potrebbero riscontrare problemi con l'autenticazione cross-device e dover risolvere i problemi delle loro impostazioni o tornare a un metodo di fallback. Gli iPhone che eseguono Safari hanno il Bluetooth integrato fin dalla loro nascita.
Tuttavia, Firefox rappresenta un problema significativo poiché è popolare sui dispositivi Windows. Se un utente è su Firefox e vuole usare la CDA, la relying party non può determinare in modo affidabile se il Bluetooth è disponibile, poiché l'API Web Bluetooth non è implementata. Ciò potrebbe comportare una scarsa esperienza utente, con gli utenti che potrebbero bloccarsi in determinati punti senza sapere cosa fare.
Come abbiamo visto anche in blog precedenti, i dispositivi Windows sono in ritardo in termini di adozione delle passkey (vedi anche State of Passkeys). Diamo un'occhiata a quanto sia comune la disponibilità del Bluetooth.
Windows 10 non ha un requisito Bluetooth rigoroso, ma la maggior parte dei laptop e dei desktop moderni è dotata di funzionalità Bluetooth. Tuttavia, l'utente potrebbe averlo disattivato o potrebbe non essere disponibile in alcune configurazioni, specialmente sui desktop assemblati su misura.
Windows 11, analogamente a Windows 10, non richiede obbligatoriamente il Bluetooth. Tuttavia, la tendenza verso un hardware più integrato e moderno significa che la maggior parte dei dispositivi compatibili con Windows 11 avrà probabilmente funzionalità Bluetooth. Tuttavia, gli utenti possono disabilitarlo, influenzando le implementazioni della CDA.
Nella tabella seguente potete vedere se è possibile determinare se un dispositivo desktop è pronto per il Bluetooth e quindi può essere utilizzato come client CDA:
Sistema operativo | Supporto Hardware Bluetooth | Rilevamento Bluetooth del browser | |||
---|---|---|---|---|---|
Chrome | Edge | Firefox | Safari | ||
Windows 10 | basso | ✅ | ✅ | ❌ | ❌ |
Windows 11 | medio | ✅ | ✅ | ❌ | ❌ |
macOS | alto | ✅ | ❌ | ❌ | ❌ |
Tenete presente che anche se il vostro hardware è pronto per il Bluetooth, la funzionalità Bluetooth potrebbe essere disattivata dall'utente. Quando il Bluetooth è disattivato, l'utente può comunque utilizzare la CDA perché può ancora scegliere di attivarlo, cosa che funziona per Windows e Mac: Richiesta di macOS per attivare il Bluetooth
Richiesta di Windows 11 per attivare il Bluetooth
L'informazione sulla disponibilità del Bluetooth è particolarmente interessante su Windows 10 e Windows 11, dove il supporto Bluetooth è inferiore e c'è una probabilità molto alta che debba avvenire un'autenticazione cross-device (in un login basato su passkey). I dispositivi macOS recenti hanno tutti il supporto per il Bluetooth. Questi dispositivi macOS hanno potenzialmente anche accesso diretto alle passkey memorizzate in iCloud Keychain, quindi non sono motivo di preoccupazione.
Su Windows 10 e Windows 11: usate getAvailability()
per scoprire se il Bluetooth può funzionare. Nel caso in cui l'utente abbia solo passkey non-Windows, potete immediatamente passare ad altre opzioni di autenticazione.
In una situazione in cui sono disponibili solo passkey ibride, l'attivazione dell'autenticazione con passkey non porterà a un'autenticazione riuscita, ma piuttosto a un vicolo cieco per l'utente. Per tutti gli altri browser su Windows 10 e Windows 11, sfortunatamente, non c'è altro modo per scoprire se c'è supporto per la CDA.
L'API Web Bluetooth rappresenta un potente strumento per migliorare l'autenticazione con passkey attraverso le capacità Bluetooth. Comprendendo e sfruttando questa API, gli sviluppatori possono creare metodi di autenticazione più sicuri e facili da usare. Tuttavia, devono anche gestirne le limitazioni e garantire robusti meccanismi di fallback per mantenere un'esperienza utente fluida su diversi browser e dispositivi.
Con questo post del blog, abbiamo dato una risposta alle tre domande principali:
getAvailability()
, getDevices()
e requestDevice()
per verificare il supporto Bluetooth, elencare i dispositivi accessibili e richiedere l'accoppiamento dei dispositivi.Per maggiori informazioni sull'API Web Bluetooth e una raccolta di esempi, cliccate qui.
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