Entenda o papel da API Web Bluetooth para as passkeys! Saiba como a deteção da disponibilidade do Bluetooth melhora a Autenticação entre Dispositivos (CDA) com 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.
2.2 getDevices()
2.3 requestDevice()
8.2 O Bluetooth nem sempre está presente e pode ser mau para a UX da CDA
8.3 Impacto diferente da indisponibilidade do Bluetooth no Firefox e Safari
As passkeys são o novo padrão de login na web. Uma das principais funcionalidades das passkeys é a Autenticação entre Dispositivos (CDA) através de Bluetooth e Códigos QR. Neste contexto, outra API web torna-se importante: a API Web Bluetooth.
Ao permitir que as aplicações web interajam diretamente com dispositivos Bluetooth, a API Web Bluetooth desempenha um papel crucial para garantir processos de autenticação seguros e eficientes (especialmente para a CDA).
Este artigo irá apresentar o funcionamento da API Web Bluetooth e explorar as implicações da deteção de Bluetooth para a autenticação com passkeys. Queremos responder às seguintes perguntas:
Recent Articles
A API Web Bluetooth é uma interface JavaScript que permite que as aplicações web acedam e comuniquem com dispositivos Bluetooth. Faz parte do padrão HTML5 e é suportada por navegadores como o Chrome, Edge e Opera. Esta API permite que as aplicações web:
Existem três funções chave na API Web Bluetooth.
getAvailability()
devolve uma promessa que se resolve para um booleano, indicando se o
agente de utilizador suporta Bluetooth
(ou seja, se o dispositivo tem um módulo Bluetooth). Alguns agentes de utilizador permitem que o utilizador configure uma opção
que especifica o valor devolvido por este método.
navigator.bluetooth.getAvailability().then((available) => { if (available) { console.log("This device supports Bluetooth!"); } else { console.log("Doh! Bluetooth is not supported"); } });
getDevices()
devolve uma promessa que se resolve para um array de BluetoothDevices
aos quais a origem tem permissão para aceder (incluindo aqueles que estão fora de alcance e desligados).
A permissão é obtida através de chamadas anteriores a Bluetooth.requestDevice()
.
navigator.bluetooth.getDevices().then((devices) => { devices.forEach((device) => { console.log("Device:", device.name); }); });
requestDevice()
devolve uma promessa para um objeto BluetoothDevice
com as opções especificadas.
Se não houver uma interface de seleção, este método devolve o primeiro dispositivo que corresponda aos critérios.
navigator.bluetooth .requestDevice({ filters: [ { services: ["battery_service"], }, ], }) .then((device) => { console.log("Device:", device.name); }) .catch((error) => { console.log("Error:", error); });
Detalhes e exemplos de código podem ser encontrados aqui. Encontre também aqui o padrão W3C para Web Bluetooth.
navigator.bluetooth.requestDevice
deve
ser acionada por um gesto do utilizador, como um toque ou clique do rato, por razões de segurança.Para verificar o suporte à API Web Bluetooth, pode fazê-lo com o seguinte código:
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!"); }
Como as funções específicas são chamadas é explicado acima.
A API Web Bluetooth oferece várias vantagens para programadores e utilizadores:
Apesar dos seus benefícios, a API Web Bluetooth tem limitações:
getAvailability()
devolva false
mesmo que um adaptador Bluetooth esteja presente. Isto
é controlado através da Permissions-Policy:Bluetooth
. Da mesma forma, mesmo que
getAvailability()
devolva true
, o adaptador Bluetooth pode não estar ligado, ou os utilizadores
podem negar a permissão para usar a API quando solicitado.A adoção da API Web Bluetooth ainda está a crescer. Em junho de 2024, de acordo com o Can I Use, 76,53% dos utilizadores globais têm dispositivos com suporte para a API Web Bluetooth.
No entanto, a falta de suporte no Safari e Firefox continua a ser um obstáculo significativo, afetando
a experiência do utilizador nesses navegadores. Além disso, algumas das funcionalidades (por exemplo,
Bluetooth.getDevices()
) devem ser ativadas explicitamente pelo utilizador, o que pode ser um
desafio para usar a API em segundo plano.
Encontre os dados mais recentes em: https://developer.mozilla.org/en-US/docs/Web/API/Web_Bluetooth_API#browser_compatibility
Existe uma razão principal pela qual as partes confiáveis devem saber sobre a disponibilidade do Bluetooth, quando querem oferecer passkeys nos seus websites e aplicações.
Uma das novas e inovadoras funcionalidades das passkeys é a Autenticação entre Dispositivos (CDA) – também conhecida como autenticação híbrida. Esta funcionalidade permite que os utilizadores se autentiquem num dispositivo (normalmente um computador de secretária ou portátil) usando os seus dispositivos móveis através de códigos QR e Bluetooth. Este método de autenticação híbrida melhora a segurança e a conveniência, proporcionando uma experiência de utilizador fluida. A maioria dos utilizadores não técnicos está hoje em dia habituada a ler códigos QR, seja durante a pandemia de COVID para registo ou através de aplicações de mensagens mobile-first que mais tarde adicionaram suporte para desktop (por exemplo, WhatsApp ou Telegram).
Decidir sobre uma estratégia de CDA é crucial no início de qualquer projeto de passkeys. Quanto mais se depender da CDA, melhor o suporte e a fiabilidade da mesma terão de ser. Assim, detetar a disponibilidade de Bluetooth num dispositivo é essencial.
No entanto, nem todos os dispositivos têm capacidades Bluetooth ou podem ter o Bluetooth desligado. Para as partes confiáveis que oferecem passkeys, é essencial detetar a disponibilidade do Bluetooth para determinar se a CDA pode ser usada ou se é necessário outro método de autenticação alternativo. A API Web Bluetooth oferece uma solução ao permitir que as aplicações web verifiquem a disponibilidade de Bluetooth nos dispositivos do utilizador.
Tenha em mente que a CDA nem sempre é estável, falhando ocasionalmente a ligação sem razões claras. Além disso, devido à novidade da API, por vezes são devolvidos resultados errados pela API.
A indisponibilidade da API Web Bluetooth no Firefox e Safari é um problema, particularmente para o Firefox.
O Safari é um problema menor porque os dispositivos macOS, onde a CDA pode ser realizada, têm Bluetooth integrado desde os primeiros modelos. No entanto, se o Bluetooth no macOS não estiver a funcionar, os utilizadores podem ter problemas com a autenticação entre dispositivos e precisar de resolver os seus problemas de configuração ou recorrer a um método alternativo. Os iPhones com Safari têm Bluetooth integrado desde o seu lançamento.
Contudo, o Firefox é um problema significativo, pois é popular em dispositivos Windows. Se um utilizador estiver no Firefox e quiser usar a CDA, a parte confiável não consegue determinar de forma fiável se o Bluetooth está disponível, uma vez que a API Web Bluetooth não está implementada. Isto pode resultar numa má experiência do utilizador, com os utilizadores potencialmente a ficarem presos em certos pontos sem saber o que fazer.
Como vimos, também em artigos anteriores, os dispositivos Windows estão a ficar para trás em termos de adoção de passkeys (veja o State of Passkeys também). Vamos ver quão comum é a disponibilidade de Bluetooth.
O Windows 10 não tem um requisito estrito de Bluetooth, mas a maioria dos portáteis e computadores de secretária modernos vêm com capacidades Bluetooth. No entanto, o utilizador pode tê-lo desligado, ou pode não estar disponível em algumas configurações, especialmente em computadores de secretária personalizados.
O Windows 11, semelhante ao Windows 10, não exige Bluetooth. No entanto, a tendência para hardware mais integrado e moderno significa que a maioria dos dispositivos compatíveis com o Windows 11 provavelmente terá capacidades Bluetooth. Ainda assim, os utilizadores podem desativá-lo, afetando as implementações de CDA.
Na tabela seguinte, pode ver se consegue determinar se um dispositivo de secretária está pronto para Bluetooth e, portanto, pode ser usado como um cliente de CDA:
Sistema operativo | Suporte de hardware Bluetooth | Deteção de Bluetooth no navegador | |||
---|---|---|---|---|---|
Chrome | Edge | Firefox | Safari | ||
Windows 10 | baixo | ✅ | ✅ | ❌ | ❌ |
Windows 11 | médio | ✅ | ✅ | ❌ | ❌ |
macOS | alto | ✅ | ❌ | ❌ | ❌ |
Tenha em mente que, mesmo que o seu hardware esteja pronto para Bluetooth, a funcionalidade Bluetooth pode ser desligada pelo utilizador. Quando o Bluetooth está desligado, o utilizador ainda pode usar a CDA porque pode optar por ativá-lo, o que funciona para Windows e Mac: Pedido do macOS para ativar o Bluetooth
Pedido do Windows 11 para ativar o Bluetooth
A informação sobre a disponibilidade do Bluetooth é especialmente interessante no Windows 10 e Windows 11, onde o suporte a Bluetooth é menor e há uma probabilidade muito alta de que a autenticação entre dispositivos precise de acontecer (num login baseado em passkeys). Os dispositivos macOS recentes todos têm suporte para Bluetooth. Estes dispositivos macOS têm potencialmente também acesso direto a passkeys armazenadas no iCloud Keychain, por isso não são uma preocupação.
No Windows 10 e Windows 11: Use getAvailability()
para descobrir se o Bluetooth pode funcionar.
Caso o utilizador tenha apenas passkeys que não são do Windows, pode recorrer imediatamente a outras
opções de autenticação.
Numa situação em que apenas estão disponíveis passkeys híbridas, acionar a autenticação com passkeys não levará a uma autenticação bem-sucedida, mas sim a um beco sem saída para o utilizador. Para todos os outros navegadores no Windows 10 e Windows 11, infelizmente, não há outra forma de descobrir se há suporte para CDA.
A API Web Bluetooth representa uma ferramenta poderosa para melhorar a autenticação com passkeys através das capacidades Bluetooth. Ao compreender e aproveitar esta API, os programadores podem criar métodos de autenticação mais seguros e fáceis de usar. No entanto, devem também navegar nas suas limitações e garantir mecanismos de recurso robustos para manter uma experiência de utilizador fluida em diferentes navegadores e dispositivos.
Com este artigo, demos uma resposta às três perguntas centrais:
getAvailability()
, getDevices()
e requestDevice()
para verificar o suporte a Bluetooth,
listar dispositivos acessíveis e solicitar o emparelhamento de dispositivos.Para mais informações sobre a API Web Bluetooth e uma coleção de exemplos, por favor clique aqui.
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