Get your free and exclusive 80-page Banking Passkey Report
web bluetooth cover

API Web Bluetooth e Passkeys

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 Delitz

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.

Visão Geral#

1. Introdução: API Web Bluetooth e Passkeys#

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:

  1. O que é a API Web Bluetooth?
  2. Como usar a API Web Bluetooth?
  3. Porque é que a deteção de Bluetooth é importante para as passkeys?

2. O que é a API Web Bluetooth?#

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:

  • procurem por dispositivos Bluetooth Low Energy (BLE) próximos
  • peçam permissão para emparelhar
  • troquem dados usando o protocolo Generic Attribute Profile (GATT).

Existem três funções chave na API Web Bluetooth.

2.1 getAvailability()#

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"); } });
Substack Icon

Subscribe to our Passkeys Substack for the latest news.

Subscribe

2.2 getDevices()#

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); }); });

2.3 requestDevice()#

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.

Slack Icon

Become part of our Passkeys Community for updates & support.

Join

3. Características da API Web Bluetooth#

  • Apenas HTTPS: A API Web Bluetooth está disponível apenas em contextos seguros (HTTPS), garantindo a transmissão segura de dados.
  • Requer gesto do utilizador: A descoberta de dispositivos através de navigator.bluetooth.requestDevice deve ser acionada por um gesto do utilizador, como um toque ou clique do rato, por razões de segurança.

4. Como usar a API Web Bluetooth#

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.

5. Benefícios da API Web Bluetooth#

A API Web Bluetooth oferece várias vantagens para programadores e utilizadores:

  • Interatividade: Permite que as aplicações web interajam com dispositivos Bluetooth sem aplicações nativas ou plugins.
  • Experiência do Utilizador Melhorada: Permite o acesso a funcionalidades e sensores de dispositivos sem fios como monitores de frequência cardíaca ou controlos de música.
  • Segurança e Privacidade: Os utilizadores devem conceder permissão para o acesso ao dispositivo, que pode ser revogada a qualquer momento.

6. Problemas com a API Web Bluetooth#

Apesar dos seus benefícios, a API Web Bluetooth tem limitações:

  • Sem suporte no Safari e Firefox: Nem todos os navegadores suportam a API. Notavelmente, o Safari e o Firefox não a suportam, o que pode afetar uma parte significativa dos utilizadores.
  • Dependência das capacidades do dispositivo: A API funciona apenas com dispositivos Bluetooth Low Energy (BLE) compatíveis. Além disso, os dispositivos podem não ser detetáveis devido a fatores como bateria fraca ou estarem fora de alcance.
  • Especificação em evolução: Sendo uma especificação em rascunho, a API Web Bluetooth está sujeita a alterações. Os programadores precisam de se manter atualizados sobre os últimos desenvolvimentos e compatibilidade dos navegadores.
  • Falsos positivos: A API pode, por vezes, indicar suporte a Bluetooth quando este não está realmente disponível.
  • Disponibilidade controlada pelo utilizador: Os utilizadores e os navegadores podem desativar as permissões de Bluetooth, fazendo com que 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.

7. Adoção da API Web Bluetooth#

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

8. Porque é que a deteção de Bluetooth é importante para as passkeys?#

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.

8.1 Funcionalidade principal das passkeys: Autenticação entre Dispositivos (CDA) via Códigos QR e Bluetooth#

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.

8.2 O Bluetooth nem sempre está presente e pode ser mau para a UX da CDA#

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.

8.3 Impacto diferente da indisponibilidade do Bluetooth no Firefox e Safari#

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.

9. O Windows 10 tem um requisito 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.

10. O Windows 11 tem um requisito de Bluetooth?#

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.

11. Recomendação#

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 operativoSuporte de hardware BluetoothDeteção de Bluetooth no navegador
ChromeEdgeFirefoxSafari
Windows 10baixo
Windows 11médio
macOSalto

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.

12. Conclusão: API Web Bluetooth para Passkeys#

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:

  1. O que é a API Web Bluetooth? A API Web Bluetooth é uma interface JavaScript que permite que as aplicações web acedam e comuniquem com dispositivos Bluetooth, facilitando interações seguras.
  2. Como usar a API Web Bluetooth? Use a API Web Bluetooth chamando funções como getAvailability(), getDevices() e requestDevice() para verificar o suporte a Bluetooth, listar dispositivos acessíveis e solicitar o emparelhamento de dispositivos.
  3. Porque é que a deteção de Bluetooth para passkeys é importante? Ao integrar a API Web Bluetooth na sua estratégia de implementação de passkeys, pode construir uma ótima solução de autenticação baseada em passkeys que recorre à CDA apenas se houver dispositivos que consigam detetar o suporte a Bluetooth.

Para mais informações sobre a API Web Bluetooth e uma coleção de exemplos, por favor clique aqui.

Add passkeys to your app in <1 hour with our UI components, SDKs & guides.

Start Free Trial

Share this article


LinkedInTwitterFacebook

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