---
url: 'https://www.corbado.com/pt/blog/webauthn-passkey-codigo-qr-bluetooth'
title: 'Passkeys com Códigos QR e Bluetooth: Transporte Híbrido'
description: 'Explore como as passkeys utilizam códigos QR e Bluetooth para autenticação entre plataformas, permitindo logins seguros e contínuos em vários dispositivos sem senhas.'
lang: 'pt'
author: 'Vincent Delitz'
date: '2025-07-01T06:52:15.969Z'
lastModified: '2026-08-29T06:03:20.248Z'
keywords: 'webauthn código qr, passkey bluetooth, passkey código qr'
category: 'WebAuthn Know-How'
---

# Passkeys com Códigos QR e Bluetooth: Transporte Híbrido

## 1. Introdução

As passkeys estão cada vez mais a substituir as palavras-passe como o padrão de facto na
[autenticação](https://www.corbado.com/pt/blog/webauthn-relying-party-id-rpid-passkeys) de utilizadores. Ao
contrário das palavras-passe tradicionais, as passkeys estão vinculadas a um ecossistema
(por exemplo, [iCloud Keychain](https://www.corbado.com/glossary/icloud-keychain),
[Google Password Manager](https://www.corbado.com/blog/how-to-use-google-password-manager),
[Windows Hello](https://www.corbado.com/glossary/windows-hello) ou um gestor de palavras-passe como o
[1Password](https://www.corbado.com/blog/1password-passkeys-best-practices-analysis) ou o
[Dashlane](https://www.corbado.com/blog/dashlane-passkeys)); não são concebidas para serem memorizadas, mas sim
para se integrarem perfeitamente com os seus dispositivos, oferecendo uma excelente
experiência de utilizador imediata.

Imagine que está longe do seu computador pessoal, talvez num terminal público ou no
portátil de um amigo, e precisa de iniciar sessão na sua conta protegida por passkey. Este
cenário é bastante comum e necessita de um método de
[autenticação](https://www.corbado.com/pt/blog/webauthn-relying-party-id-rpid-passkeys) seguro e conveniente, mas
com as passkeys, muitas pessoas não sabem o que fazer, pois a sua passkey não está
imediatamente disponível nesta situação. Uma das funcionalidades das passkeys para o
ajudar em tal situação é a capacidade de empregar as suas passkeys em múltiplos
dispositivos através da facilitação de códigos QR e tecnologia Bluetooth. Este processo é
formalmente conhecido como **transporte híbrido** na
[especificação WebAuthn](https://www.w3.org/TR/webauthn-3/#dom-authenticatortransport-hybrid)
(em versões anteriores da especificação, é referido como **Bluetooth Low Energy assistido
por nuvem, ou caBLE**).

O processo é simples: precisa de um dispositivo que tenha as suas passkeys armazenadas e
seja capaz de tirar fotografias, muito provavelmente um smartphone ou tablet. Este
dispositivo pode abrir um túnel para o novo dispositivo apenas para essa instância de
[autenticação](https://www.corbado.com/pt/blog/webauthn-relying-party-id-rpid-passkeys). Isto não só mantém a
integridade da sua passkey, como também garante que o acesso à sua conta em novos
dispositivos pode ser concedido, não importa onde esteja ou que dispositivo queira usar
para iniciar sessão.

No entanto, esta funcionalidade de autenticação multiplataforma das passkeys está rodeada
de equívocos e confusão, tanto na sua utilidade como na sua implementação técnica. Isto
foi algo que notei novamente recentemente, quando visitei um encontro local de
[segurança](https://www.corbado.com/pt/blog/senhas-complexas-quebradas-em-breve) de TI. Através deste artigo,
pretendemos desvendar as complexidades e fornecer recomendações para implementar este
fluxo de autenticação de passkey multiplataforma (transporte híbrido), garantindo que pode
proporcionar a melhor experiência de início de sessão para os seus utilizadores.

## 2. Passkeys: Sincronizadas ou Apenas Disponíveis num Único Dispositivo

As passkeys são uma forma de autenticação de utilizador que substitui a palavra-passe
tradicional por um par de chaves criptográficas pública-privada mais seguro e conveniente.
Este par de chaves é único para cada utilizador e é usado para verificar a identidade sem
o incómodo de lembrar palavras-passe complexas.

As vantagens das passkeys são numerosas em comparação com as suas predecessoras, as
palavras-passe. Elas reduzem significativamente o risco de [phishing](https://www.corbado.com/glossary/phishing),
pois não podem ser enganadas para serem partilhadas com um site falso. Além disso, são
imunes a ataques de [força bruta](https://www.corbado.com/pt/blog/senhas-complexas-quebradas-em-breve) e de
dicionário, que são métodos comuns usados para quebrar palavras-passe. As passkeys são
também mais fáceis de usar, eliminando a necessidade de lembrar ou gerir uma longa lista
de palavras-passe.

As passkeys são sincronizadas em contas na nuvem, como as geridas pelo Google
[Password Manager](https://www.corbado.com/blog/passkeys-vs-password-managers) ou Apple
[iCloud Keychain](https://www.corbado.com/glossary/icloud-keychain) (a Microsoft com o
[Windows Hello](https://www.corbado.com/glossary/windows-hello) seguirá em breve), ou as armazenadas em gestores
de palavras-passe modernos prontos para passkeys, como o
[1Password](https://www.corbado.com/blog/1password-passkeys-best-practices-analysis) ou o
[Dashlane](https://www.corbado.com/blog/dashlane-passkeys). No entanto, é essencial saber que, por defeito, as
passkeys estão vinculadas ao ecossistema e à respetiva sincronização da conta na nuvem. Os
sistemas operativos não fornecem uma interface para exportar as chaves privadas e, na
maioria dos dispositivos, existe um componente de hardware que fornece medidas de
[segurança](https://www.corbado.com/pt/blog/senhas-complexas-quebradas-em-breve) adicionais para evitar qualquer
acesso às chaves privadas, por exemplo, o [Secure Enclave](https://www.corbado.com/glossary/secure-enclave) em
dispositivos [iOS](https://www.corbado.com/blog/how-to-enable-passkeys-ios) ou o Trusted Platform Module (TPM) em
dispositivos Windows. Apenas o fornecedor do sistema operativo pode sincronizar as
passkeys com outros dispositivos de forma encriptada (em última análise, protegida pela
[biometria](https://www.corbado.com/pt/blog/biometria-confirmacao-pagador), código de acesso ou PIN do
utilizador). As chaves privadas só podem ser restauradas e desencriptadas usando o código
de acesso / PIN e serão destruídas caso haja demasiadas tentativas de início de sessão sem
sucesso na conta na nuvem (por exemplo, a [Apple](https://support.apple.com/en-us/102195)
introduz um limite de taxa para prevenir ataques de
[força bruta](https://www.corbado.com/pt/blog/senhas-complexas-quebradas-em-breve) mesmo a partir de uma posição
privilegiada no backend da nuvem; a
[Google](https://security.googleblog.com/2022/10/SecurityofPasskeysintheGooglePasswordManager.html)
faz o mesmo).

Este design inerente significa que, se as passkeys não forem sincronizadas como descrito,
aceder às suas passkeys num novo dispositivo pode representar um desafio. É precisamente
por isso que existe o método de
[transporte híbrido](https://www.corbado.com/pt/blog/webauthn-transportes-interno-hibrido) para autenticação
multiplataforma de passkeys (transporte híbrido) com
[código QR](https://www.corbado.com/pt/blog/login-codigo-qr-autenticacao) e verificação de proximidade por
Bluetooth. Ele fornece uma ponte segura para as suas passkeys entre dispositivos sem a
necessidade de as sincronizar através de uma conta na nuvem / gestor de palavras-passe,
mantendo assim o princípio de que as passkeys podem permanecer exclusivamente com o
utilizador.

## 3. Configuração Técnica da Autenticação de Passkey Multiplataforma

A utilização da autenticação de passkey multiplataforma (transporte híbrido) ajuda a
superar problemas entre dispositivos, quando uma conta é acedida puramente através de
passkeys. Como nem todas as passkeys são sincronizadas em contas na nuvem ou gestores de
palavras-passe, a necessidade de um método fiável para aceder a passkeys em diferentes
dispositivos torna-se crítica, especialmente ao transitar para um novo dispositivo ou ao
precisar de acesso num dispositivo partilhado.

### 3.1 Requisitos de Hardware

Para facilitar a autenticação de passkey multiplataforma (transporte híbrido), existem os
seguintes requisitos de hardware:

- **Suporte WebAuthn:** Os dispositivos devem suportar WebAuthn. Isto já é uma realidade
  em 99% dos dispositivos, de acordo com a nossa última análise de dados de passkeys.
- **Câmara para Leitura de Códigos QR:** Os dispositivos precisarão de uma câmara capaz de
  ler códigos QR. A maioria dos smartphones modernos está equipada com câmaras que têm
  esta funcionalidade. Além disso, a câmara precisa de capacidades de leitura de QR
  incorporadas (o que a maioria dos dispositivos tem de origem). Se a sua câmara não
  suportar, um [leitor de QR online](https://www.minifier.org/qr-code-scanner) também é
  uma boa opção. Caso contrário, instalar uma aplicação de
  [código QR](https://www.corbado.com/pt/blog/login-codigo-qr-autenticacao) também serve.
- **Capacidade Bluetooth:** O Bluetooth Low [Energy](https://www.corbado.com/passkeys-for-energy) assistido por
  nuvem (caBLE) é usado para estabelecer uma ligação segura baseada na proximidade entre
  dispositivos. As versões a procurar são Bluetooth 4.0 ou superior, que permitem a
  extensão caBLE para WebAuthn.
- **Ligação à Internet:** É necessária uma ligação estável à Internet em ambos os
  dispositivos, pois a troca envolve a abertura de um túnel para realizar passos de
  verificação que requerem transferência de dados em tempo real.

### 3.2 Requisitos de Software

Do ponto de vista do software, existem os seguintes requisitos:

- **Configuração do Servidor WebAuthn:** Obviamente, precisa de ter um servidor WebAuthn
  implementado que gira as chaves públicas. Isto também envolve permitir que a conta do
  utilizador seja associada a múltiplos autenticadores e configurar o servidor para
  iniciar a cerimónia de autenticação.
- **API Web Bluetooth:** Para a verificação de proximidade por Bluetooth, precisará de
  aceder à [API Web Bluetooth](https://www.corbado.com/pt/blog/api-web-bluetooth-passkeys) que aciona as
  capacidades Bluetooth do dispositivo a partir de um navegador.
- **Requisitos do Sistema Operativo:** Por favor, consulte a seguinte
  [tabela](https://passkeys.dev/device-support/) sobre o suporte da Autenticação Entre
  Dispositivos para diferentes sistemas operativos a partir de março de 2025. Autenticador
  significa que o dispositivo pode servir como o dispositivo que detém uma passkey (no
  nosso cenário, o smartphone). Cliente significa o dispositivo que cria o
  [código QR](https://www.corbado.com/pt/blog/login-codigo-qr-autenticacao) e onde o utilizador tenta iniciar
  sessão (no nosso cenário, o desktop):

![Suporte de Código QR de Passkey por Sistema Operativo](https://www.corbado.com/website-assets/operating_system_passkey_qr_code_support_298aac92f9.png)_Fonte:
passkeys.dev_

## 4. Passkeys: Código QR

O processo para usar a autenticação de passkey multiplataforma (transporte híbrido)
através de código QR é o seguinte:

![visão geral do código qr de passkeys](https://s3.eu-central-1.amazonaws.com/corbado-cloud-staging-website-assets/passkeys_qr_code_overview_52c519fe2c.png)

### 4.1 Iniciar a Autenticação de Passkey Multiplataforma

O código QR para a autenticação de passkey multiplataforma (transporte híbrido) é gerado
quando um utilizador tenta aceder a um serviço num dispositivo onde a passkey registada
não está presente, mas o serviço sabe que o utilizador deveria ter uma passkey.
Normalmente, um botão "Ler código QR" ou uma chamada para ação semelhante é fornecida na
interface de autenticação.

### 4.2 Gerar o Código QR

A pedido do utilizador, o dispositivo inicia a geração de um código QR. Este código QR
codifica um identificador de sessão único e sensível ao tempo. Este identificador está
ligado a uma sessão que o servidor de autenticação mantém temporariamente, aguardando a
conclusão do processo de autenticação.

### 4.3 Ler o Código QR

O utilizador lê este código QR com um dispositivo onde a sua passkey está disponível. As
medidas de [segurança](https://www.corbado.com/pt/blog/senhas-complexas-quebradas-em-breve) incluem:

- **Uso único:** O identificador de sessão dentro do código QR é válido para um único uso,
  prevenindo ataques de repetição.
- **Encriptação:** Todos os dados dentro do código QR são encriptados, garantindo que
  qualquer comunicação intercetada não possa ser decifrada por partes não autorizadas.

O código QR lido contém um URI específico com o esquema [FIDO](https://www.corbado.com/pt/glossary/cda), por
exemplo:
[FIDO](https://www.corbado.com/pt/glossary/cda):/07824133892604070278923969472008301099476228966286113051476699183587
6383562063181103169246410435938367110394959927031730060360967994421
343201235185697538107096654083332

### 4.4 Iniciar o Fluxo de Dados e o Processo de Autenticação

A leitura do código QR faz com que o segundo dispositivo do utilizador (por exemplo,
smartphone ou tablet) interprete o URI [FIDO](https://www.corbado.com/pt/glossary/cda) e comunique com o servidor
de autenticação, enviando um sinal de que o utilizador está a tentar autenticar-se através
de um novo dispositivo (por exemplo, o portátil do amigo). Esta ação leva o servidor a
gerar um desafio criptográfico, único para esta tentativa de autenticação.

### 4.5 Transmitir Dados Técnicos

O desafio é enviado de volta para o segundo dispositivo do utilizador (por exemplo,
smartphone ou tablet), onde a sua passkey está armazenada. O dispositivo cria então uma
assinatura digital usando a chave privada associada à passkey, sem que a chave privada
saia do dispositivo (por exemplo, smartphone ou tablet). O desafio assinado (assinatura) é
então enviado de volta para o servidor através de um túnel seguro e encriptado pela
internet, verificando a integridade e a origem da tentativa de autenticação.

### 4.6 Validar a Assinatura

O servidor valida a assinatura usando a [chave pública](https://www.corbado.com/pt/glossary/jwks) correspondente
já associada à conta do utilizador. Após a validação bem-sucedida, o servidor confirma a
autenticação, permitindo que o utilizador aceda ao serviço no novo dispositivo.

Alguns aspetos mais importantes de privacidade e segurança a considerar:

- **Sem Troca de Dados por Bluetooth, Apenas Internet:** É importante notar que nesta
  autenticação de passkey multiplataforma baseada em código QR (transporte híbrido), o
  Bluetooth não está envolvido na troca de dados. Este processo depende inteiramente de
  uma ligação à Internet para a transmissão de dados encriptados entre os dispositivos e o
  servidor. No entanto, o Bluetooth é usado para uma verificação de proximidade dos dois
  dispositivos.
- **As Chaves Privadas Não Saem do Dispositivo:** Durante todo este processo, as chaves
  privadas do utilizador permanecem seguras no seu dispositivo.
- **Sem Exposição de Dados Sensíveis:** Nenhuma informação sensível de passkey ou chaves
  privadas é transferida ou exposta durante o processo de autenticação.
- **Criptografia Assimétrica:** O mecanismo de desafio-resposta garante que o que está a
  ser enviado são meramente versões não reutilizáveis e assinadas de desafios que não
  podem ser explorados para acesso não autorizado.

Ao aderir a estes protocolos técnicos e de segurança, o método de código QR para
autenticação de passkey multiplataforma (transporte híbrido) mantém um alto padrão de
segurança, ao mesmo tempo que fornece uma forma conveniente para os utilizadores
autenticarem as suas identidades em novos dispositivos.

## 5. Passkeys: Bluetooth (caBLE)

Além do processo de leitura de código QR, existe também a verificação de proximidade via
Bluetooth (caBLE). Ter a certeza de que o cliente e o autenticador estão fisicamente
próximos um do outro é um dos principais benefícios do
[protocolo WebAuthn](https://www.w3.org/TR/webauthn-3/#sctn-client-authenticator-proximity).
Mais detalhes sobre o funcionamento interno deste processo são descritos a seguir:

![visão geral do bluetooth de passkeys](https://s3.eu-central-1.amazonaws.com/corbado-cloud-staging-website-assets/passkeys_bluetooth_overview_2064227c37.png)

### 5.1 O que é Bluetooth Low Energy (BLE) na Autenticação?

**Bluetooth Low Energy (BLE)** é uma tecnologia de comunicação sem fios projetada para a
troca de dados a curta distância. Desempenha um papel fundamental na confirmação da
proximidade física dos dispositivos durante o processo de autenticação.

### 5.2 O que é caBLE (Cloud-Assisted Bluetooth Low Energy)?

**caBLE** é um protocolo que facilita a transferência segura de informações de
[autenticação entre dispositivos](https://www.corbado.com/pt/blog/webauthn-transportes-interno-hibrido) usando
BLE. Ao usar caBLE para autenticação de passkey multiplataforma (transporte híbrido), o
dispositivo que detém a passkey confirma a proximidade do dispositivo solicitante através
de sinais BLE. Uma vez verificada a proximidade, o processo de autenticação prossegue,
utilizando o BLE para uma comunicação local e segura.

### 5.3 Experiência do Utilizador e Segurança com caBLE

A experiência do utilizador é melhorada, pois este método geralmente requer menos
interação direta do utilizador; dispositivos em proximidade física detetam-se
automaticamente. Para a segurança, o **caBLE** oferece uma vantagem significativa -
garante que o processo de autenticação só é realizado quando os dois dispositivos estão
próximos um do outro, impedindo que atacantes remotos iniciem o processo de autenticação.

### 5.4 Cenário: O Dilema do Código QR vs. BLE

Imagine receber um código QR que redireciona para um site malicioso. Se a autenticação for
realizada através deste código QR, existe o risco de a sessão ou o cookie poderem ser
sequestrados. O BLE contorna este problema ao não depender de uma leitura visual, mas sim
da presença física dos dispositivos. Esta verificação de proximidade minimiza o risco de
ataques man-in-the-middle, pois a verificação de proximidade não ocorre pela internet ou
por um meio visual.

### 5.5 Troca de Dados e Privacidade

Ao contrário de outros métodos, o caBLE não troca dados de autenticação como as passkeys.
Em vez disso, usa o BLE como um canal de confirmação para estabelecer que os dispositivos
estão fisicamente próximos. Esta verificação é projetada para ser parte de um processo de
autenticação multifator onde a proximidade BLE é um dos fatores, garantindo que, mesmo que
outros fatores sejam comprometidos, sem a proximidade física, o acesso não é concedido.

Ao integrar o protocolo caBLE, os programadores podem oferecer um método seguro e fácil de
usar para a autenticação de passkey multiplataforma (transporte híbrido) que melhora a
segurança geral do processo de autenticação. A verificação de proximidade adiciona uma
camada adicional de proteção que é simples para os utilizadores e, no entanto, protege
eficazmente contra certos tipos de ciberataques sofisticados.

## 6. Benefícios

Existem os seguintes benefícios deste método de autenticação de passkey multiplataforma
(transporte híbrido):

### 6.1 Caminho para uma Boa Experiência do Utilizador

A autenticação de passkey multiplataforma via código QR e Bluetooth (transporte híbrido) é
uma forma de melhorar a UX em cenários multiplataforma em comparação com não oferecer
qualquer possibilidade. No entanto, o fluxo do utilizador é absolutamente novo para a
maioria dos utilizadores e não esperamos que muitos utilizadores não técnicos entendam o
que está a acontecer quando se deparam com este fluxo pela primeira vez. A única
semelhança da introdução do fluxo de código QR pode ser com os fluxos de início de sessão
para, por exemplo, [WhatsApp](https://www.corbado.com/blog/whatsapp-passkeys) Web ou Discord, onde são empregados
códigos QR (aqui a funcionalidade é diferente, no entanto). Assim, o processo de
autenticação de passkey multiplataforma analisado via código QR / Bluetooth (transporte
híbrido) minimiza o esforço do utilizador no cenário multiplataforma, pois não há
necessidade de inserir manualmente quaisquer credenciais, mas ainda assim o fluxo geral é
desconhecido para a maioria dos utilizadores.

### 6.2 Segurança Robusta

A segurança da autenticação de passkey multiplataforma (transporte híbrido) é reforçada
por técnicas criptográficas avançadas. Quando um código QR é lido ou uma ligação Bluetooth
é feita para autenticação, desafios e respostas criptográficas garantem que apenas o
dispositivo pretendido pode concluir com sucesso o processo de autenticação.

As verificações de proximidade via Bluetooth adicionam uma camada adicional de segurança,
confirmando que a tentativa de autenticação está a ser feita por alguém com acesso físico
ao dispositivo secundário.

### 6.3 Integridade da Passkey

Durante o processo de autenticação multiplataforma (transporte híbrido), as passkeys nunca
são armazenadas temporariamente em dispositivos ou servidores intermediários, o que
previne o risco de as passkeys serem intercetadas ou vazadas durante o processo de
transferência. A autenticação acontece em tempo real, e a passkey permanece vinculada ao
dispositivo principal do utilizador, preservando a sua integridade.

### 6.4 Prevenção de Phishing

Os métodos de autenticação por código QR e Bluetooth fornecem inerentemente proteção
contra [phishing](https://www.corbado.com/glossary/phishing). É menos provável que os utilizadores sejam
enganados a fornecer uma passkey para um site malicioso porque o processo de autenticação
requer ações físicas que são específicas dos dispositivos de confiança do utilizador.

O processo de ler um código QR ou conectar-se via Bluetooth geralmente acontece num
ambiente de confiança, reduzindo a chance de os utilizadores comprometerem
inadvertidamente as suas credenciais.

## 7. Desvantagens

Existem as seguintes desvantagens deste método de autenticação de passkey multiplataforma
(transporte híbrido):

### 7.1 Familiaridade e Adoção do Utilizador

A introdução de qualquer nova tecnologia pode levar à confusão do utilizador,
especialmente se os utilizadores não forem tecnicamente experientes. A autenticação de
passkey multiplataforma via código QR e Bluetooth (transporte híbrido) é uma mudança
significativa em relação aos métodos de autenticação tradicionais, e alguns utilizadores
podem achar o novo processo difícil de entender, levando potencialmente a uma taxa de
adoção mais lenta. No entanto, esperamos que os utilizadores acabem por se habituar, pelo
que a mudança pode ser mais difícil no início e tornar-se-á mais suave e mais aceite ao
longo do tempo.

### 7.2 Dependência das Capacidades do Dispositivo

O sucesso da autenticação de passkey multiplataforma (transporte híbrido) depende
fortemente de o dispositivo do utilizador ter as capacidades necessárias, como uma câmara
que pode ler códigos QR e funcionalidade Bluetooth. Utilizadores com dispositivos mais
antigos que não possuem estas funcionalidades não poderão tirar partido da autenticação de
passkey multiplataforma (transporte híbrido), criando uma exclusão digital baseada em
limitações de hardware.

### 7.3 Comportamento Inconsistente do Utilizador

O comportamento do utilizador pode ser imprevisível, e a dependência de os utilizadores
realizarem ações específicas como ler um código QR ou ativar o Bluetooth pode introduzir
erros do utilizador. Por exemplo, o Bluetooth pode por vezes ser visto como um desafio de
UX devido a problemas de emparelhamento, problemas de descoberta e desconfiança geral do
utilizador em tecnologias sem fios para transações seguras.

### 7.4 Adaptação dos Programadores

Os programadores enfrentam a tarefa de atualizar e manter constantemente os sistemas para
suportar os métodos de autenticação mais recentes. A integração da autenticação de passkey
multiplataforma (transporte híbrido) em sistemas existentes exige que os programadores se
mantenham a par de novos padrões, adotem novas APIs e garantam a retrocompatibilidade, o
que pode ser intensivo em recursos e demorado.

### 7.5 Criação de Novas Passkeys

Para cada novo dispositivo ou pedido de início de sessão subsequente, uma nova passkey
precisa de ser criada se não estiver a usar uma conta na nuvem sincronizada como o iCloud
Keychain ou um gestor de palavras-passe. Isto pode adicionar complexidade à experiência do
utilizador e pode criar frustração se os utilizadores não estiverem familiarizados com o
processo ou se este não for intuitivo.

### 7.6 Educar os Utilizadores

Existe uma necessidade inerente de educação do utilizador ao implementar novos métodos de
segurança como a autenticação de passkey multiplataforma (transporte híbrido). Garantir
que os utilizadores entendem como usar códigos QR e Bluetooth de forma segura requer uma
comunicação clara e, possivelmente, um suporte ao cliente extensivo.

Embora a autenticação de passkey multiplataforma via código QR e Bluetooth (transporte
híbrido) represente um avanço significativo na tecnologia de autenticação, estas
potenciais desvantagens destacam a necessidade de um design amigável, sistemas de suporte
robustos e uma transição gradual e bem comunicada dos métodos tradicionais para os
inovadores. Tal como em qualquer mudança tecnológica, equilibrar os benefícios da inovação
com os seus desafios será a chave para uma implementação bem-sucedida e uma ampla
aceitação por parte do utilizador.

## 8. Teste na Vida Real: Comportamento da Passkey com Transporte Híbrido

Como aviso: estamos a ignorar as chaves de segurança de hardware (por exemplo, YubiKeys)
no teste seguinte e a usar apenas autenticadores de plataforma que estão integrados nos
dispositivos (por exemplo, [Face ID](https://www.corbado.com/faq/is-face-id-passkey), Touch ID,
[Windows Hello](https://www.corbado.com/glossary/windows-hello)). No caso de chaves de segurança de hardware (por
exemplo, [YubiKey](https://www.corbado.com/glossary/yubikey)), os valores para `transports` seriam
`[usb ou nfc]`([https://www.w3.org/TR/webauthn-2/#enum-transport](https://www.w3.org/TR/webauthn-2/#enum-transport)),
por exemplo.

Estamos a usar as seguintes combinações de dispositivo / navegador e o
[Passkeys Debugger](https://www.passkeys-debugger.io) para testar o comportamento. O
[Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) não é considerado, pois o
[Android](https://www.corbado.com/blog/how-to-enable-passkeys-android) não pode servir como cliente de
autenticação multiplataforma (transporte híbrido) (ver tabela
[acima](#32-requisitos-de-software)):

![](https://www.corbado.com/website-assets/656e0d50740ce2c32c21d812_overview_tests_webauthn_allowcredentials_transports_544b9b36a3.png)

Para testar o comportamento, criamos para cada combinação uma nova passkey com as
seguintes propriedades:

- **userName:** alex muller (sem influência neste teste)
- **authenticatorAttachment:** platform (pois queremos excluir chaves de segurança de
  hardware como YubiKeys)
- **residentKey:** preferred (sem influência neste teste)
- **userVerification:** preferred (sem influência neste teste)
- **attestation:** none (sem influência neste teste)
- **hints:** empty (ver explicação abaixo)
- **usePRF:** no (sem influência neste teste)

Após a criação bem-sucedida da passkey, modificamos a entrada da propriedade do servidor
WebAuthn [allowCredentials](https://www.corbado.com/glossary/allowcredentials) e iniciamos um pedido de início de
sessão. Queremos simular uma passkey eliminada no dispositivo onde criámos a passkey, para
que o dispositivo / navegador procure outro dispositivo que possa fornecer uma passkey via
código QR / Bluetooth. Portanto, alteramos o ID da credencial e atribuímos o valor
CHANGED-ID, para que a correspondência falhe. Além disso, alteramos a
[propriedade `transports`](https://www.w3.org/TR/webauthn-2/#dictdef-publickeycredentialdescriptor)
de uma credencial WebAuthn em [allowCredentials](https://www.corbado.com/glossary/allowcredentials) e atribuímos
para cada combinação de dispositivo / navegador os seguintes valores:

1. **transports: \[internal, hybrid]:** As passkeys podem ser usadas a partir do
   autenticador de plataforma (por exemplo, [Face ID](https://www.corbado.com/faq/is-face-id-passkey), Touch ID,
   Windows Hello) ou via autenticação multiplataforma
2. **transports: \[internal]:** As passkeys podem ser usadas a partir do autenticador de
   plataforma (por exemplo, [Face ID](https://www.corbado.com/faq/is-face-id-passkey), Touch ID, Windows Hello)
3. **Nenhuma propriedade `transports` definida:** comportamento padrão que não impõe
   restrições

No site de testes WebAuthn, existe também a nova funcionalidade do
[WebAuthn Level 3](https://www.corbado.com/blog/passkeys-prf-webauthn) para dicas de agentes de utilizador
(`hints`). Esta funcionalidade pode melhorar a experiência do utilizador se a parte
confiável tiver certas suposições sobre como o pedido de início de sessão pode ser
concluído da forma mais amigável para o utilizador. Neste teste, desconsiderámos esta
funcionalidade, pois ainda não foi implementada. Por favor, consulte as
[especificações](https://www.w3.org/TR/webauthn-3/#enumdef-publickeycredentialhints) para
mais detalhes.

### 8.1 Windows 11 23H2 + Chrome 119

#### 8.1.1 transports: \[internal, hybrid]

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![Windows Chrome Transports Internal Hybrid](https://www.corbado.com/website-assets/654c1f5b09bf2b7220209704_windows_chrome_transports_hybrid_internal_d9f6f6b81e.png)

#### 8.1.2 transports: \[internal]

De forma bastante confusa, o código QR também é exibido aqui, mesmo que apenas permitamos
credenciais internas. Não conseguimos encontrar uma razão válida para este comportamento.

![Windows Chrome Transports Internal](https://www.corbado.com/website-assets/654c1f6e07c2e857e5de0960_windows_chrome_transports_internal_810b5ed722.png)

#### 8.1.3 Nenhuma propriedade `transports` definida

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, [YubiKey](https://www.corbado.com/glossary/yubikey)) / autenticador
multiplataforma / autenticador itinerante.

Por alguma razão, partes do modal aparecem em alemão, que é um dos idiomas instalados.

![Windows Chrome No Transports](https://www.corbado.com/website-assets/654c1f7c40ea851fa10a89dd_windows_chrome_no_transports_03ec5939bf.png)

#### 8.1.4 `allowCredentials` vazio

Como esperado, todas as formas de autenticação por passkey são permitidas: via Windows
Hello, via código QR, via dispositivos conhecidos e via chaves de segurança de hardware.

![Windows Chrome Empty AllowCredentials](https://www.corbado.com/website-assets/656e0de868019ba489b24512_windows_11_chrome_119_empty_allow_Credentials_68d90ba714.png)

### 8.2 Windows 11 23H2 + Edge 119

#### 8.2.1 transports: \[internal, hybrid]

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![Windows Edge Transports Internal Hybrid](https://www.corbado.com/website-assets/654c1f886911a0090e885576_windows_edge_transports_hybrid_internal_a20488b2eb.png)

#### 8.2.2 transports: \[internal]

De forma bastante confusa, o código QR também é exibido aqui, mesmo que apenas permitamos
credenciais internas. Não conseguimos encontrar uma razão válida para este comportamento.

![Windows Edge Transports Internal](https://www.corbado.com/website-assets/654c1f90d40c371a2059f8ae_windows_edge_transports_internal_8bb4ce60ac.png)

#### 8.2.3 Nenhuma propriedade `transports` definida

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, [YubiKey](https://www.corbado.com/glossary/yubikey)) / autenticador
multiplataforma / autenticador itinerante.

Por alguma razão, partes do modal aparecem em alemão, que é um dos idiomas instalados.

![Windows Edge No Transports](https://www.corbado.com/website-assets/654c1f9f89423cbcd1c67e70_windows_edge_no_transports_c653d9bc38.png)

#### 8.2.4 `allowCredentials` vazio

Como esperado, todas as formas de autenticação por passkey são permitidas: via Windows
Hello, via código QR, via dispositivos conhecidos e via chaves de segurança de hardware.

![Windows Edge Empty AllowCredentials](https://www.corbado.com/website-assets/656e0e0237b9a8e24c906511_windows_11_edge_119_empty_allow_Credentials_baad1ac445.png)

### 8.3 Windows 11 23H2 + Firefox 119

Ao criar a passkey, recebemos o seguinte erro (ainda assim, uma passkey foi criada):

_erro: TypeError: 'toJSON' chamado num objeto que não implementa a interface
PublicKeyCredential._

#### 8.3.1 transports: \[internal, hybrid]

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![Windows Firefox Transports Internal Hybrid](https://www.corbado.com/website-assets/654c1faab48ed06061c78b6b_windows_firefox_transports_hybrid_internal_395db978cb.png)

#### 8.3.2 transports: \[internal]

De forma bastante confusa, o código QR também é exibido aqui, mesmo que apenas permitamos
credenciais internas. Não conseguimos encontrar uma razão válida para este comportamento.

![Windows Firefox Transports Internal](https://www.corbado.com/website-assets/654c1fb221d9f40ec2c98fdc_windows_firefox_transports_internal_d706bc716a.png)

#### 8.3.3 Nenhuma propriedade `transports` definida

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

Por alguma razão, partes do modal aparecem em alemão, que é um dos idiomas instalados.

![Windows Firefox No Transports](https://www.corbado.com/website-assets/654c1fbbd7927473aed38c5f_windows_firefox_no_transports_7afb6db1ff.png)

#### 8.3.4 `allowCredentials` vazio

Como esperado, todas as formas de autenticação por passkey são permitidas: via Windows
Hello, via código QR, via dispositivos conhecidos e via chaves de segurança de hardware.

![Windows Firefox Empty AllowCredentials](https://www.corbado.com/website-assets/656e0e2a6c3ecab809ecedca_windows_11_firefox_119_empty_allow_Credentials_17189f07d7.png)

### 8.4 macOS Ventura + Chrome 119

#### 8.4.1 transports: \[internal, hybrid]

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador). Além disso, pode selecionar diretamente um dos dispositivos conhecidos para
usar uma passkey a partir daí.

O modal é bastante diferente do seu equivalente no Windows no Chrome 119.

![macOS Chrome Transports Internal Hybrid](https://www.corbado.com/website-assets/654c1fc5227b32dc36e6ea46_macos_chrome_transports_hybrid_internal_e4abefb558.png)

#### 8.4.2 transports: \[internal]

Este é um comportamento esperado, pois apenas permitimos o uso de passkeys internas, mas
não conseguimos encontrar uma credencial interna no dispositivo (não temos permissão para
usar passkeys híbridas). A autenticação da passkey falha neste passo e, em implementações
reais, seria necessário fornecer um método de autenticação de recurso.

![macOS Chrome Transports Internal](https://www.corbado.com/website-assets/654c1fdddac09b00d0bd3b2e_macos_chrome_transports_internal_71b31d4942.png)

#### 8.4.3 Nenhuma propriedade `transports` definida

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador de plataforma cruzada /
autenticador itinerante. Além disso, pode selecionar diretamente um dos dispositivos
conhecidos para usar uma passkey a partir daí.

O modal é bastante diferente do seu equivalente no Windows no Chrome 119.

![macOS Chrome No Transports](https://www.corbado.com/website-assets/654c1fe730b66c728200bc32_macos_chrome_no_transports_d875932a07.png)

#### 8.4.4 `allowCredentials` vazio

Como esperado, todas as formas de autenticação por passkey são permitidas: via Touch ID,
via código QR, via dispositivos conhecidos e via chaves de segurança de hardware.

![macOS Chrome Empty AllowCredentials](https://www.corbado.com/website-assets/656e0e406ac7f571113f8cde_macos_14_1_chrome_119_empty_allow_Credentials_99a9202253.png)

### 8.5 macOS Ventura + Safari 16.6

#### 8.5.1 transports: \[internal, hybrid]

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![macOS Safari Transports Internal Hybrid](https://www.corbado.com/website-assets/654c1ff330b66c728200c300_macos_safari_transports_hybrid_internal_fbfcf996eb.png)

#### 8.5.2 transports: \[internal]

De forma bastante confusa, o código QR também é exibido aqui, mesmo que apenas permitamos
credenciais internas. Não conseguimos encontrar uma razão válida para este comportamento.

![macOS Safari Transports Internal](https://www.corbado.com/website-assets/654c1ffc07913779f551177a_macos_safari_transports_internal_ea68c7e5a4.png)

#### 8.5.3 Nenhuma propriedade `transports` definida

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

![macOS Safari No Transports](https://www.corbado.com/website-assets/654c20077178565661c7b9ae_macos_safari_no_transports_4ff6aa97f5.png)

#### 8.5.4 `allowCredentials` vazio

Como esperado, a maioria das formas de autenticação por passkey são permitidas: via Touch
ID, via código QR e via chaves de segurança de hardware. Por alguma razão, os dispositivos
conhecidos não são exibidos.

![macOS Safari Empty AllowCredentials](https://www.corbado.com/website-assets/656e0e5c1ebd36d824b3f8a4_macos_14_1_safari_17_1_empty_allow_Credentials_3f548fc22a.jpg)

### 8.6 iOS 17.1 + Chrome 119

#### 8.6.1 transports: \[internal, hybrid]

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![iOS Chrome Transports Internal Hybrid](https://www.corbado.com/website-assets/654c20157279c6a5b35595fe_ios_chrome_transports_hybrid_internal_25b2bc95a9.png)

#### 8.6.2 transports: \[internal]

De forma bastante confusa, o código QR também é exibido aqui, mesmo que apenas permitamos
credenciais internas. Não conseguimos encontrar uma razão válida para este comportamento.

![iOS Chrome Transports Internal](https://www.corbado.com/website-assets/654c2021b48ed06061c7da4c_ios_chrome_transports_internal_9c90430238.png)

#### 8.6.3 Nenhuma propriedade `transports` definida

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

![iOS Chrome No Transports](https://www.corbado.com/website-assets/654c2028347d6de2c424b8ea_ios_chrome_no_transports_800e1f28db.png)

#### 8.6.4 `allowCredentials` vazio

Como esperado, a maioria das formas de autenticação por passkey são permitidas: via Face
ID, via código QR e via chaves de segurança de hardware. Por alguma razão, os dispositivos
conhecidos não são exibidos.

![iOS Chrome Empty AllowCredentials](https://www.corbado.com/website-assets/656e0e736ac7f571113fcbc3_ios_17_1_chrome_119_empty_allow_Credentials_594c94ef33.jpg)

### 8.7 iOS 17.1 + Safari 17.1

#### 8.7.1 transports: \[internal, hybrid]

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![iOS Safari Transports Internal Hybrid](https://www.corbado.com/website-assets/654c2031a6f031f3de7f37c2_ios_safari_transports_hybrid_internal_962be3dc05.png)

#### 8.7.2 transports: \[internal]

De forma bastante confusa, o código QR também é exibido aqui, mesmo que apenas permitamos
credenciais internas. Não conseguimos encontrar uma razão válida para este comportamento.

![iOS Safari Transports Internal](https://www.corbado.com/website-assets/654c20398e839fca2cd27610_ios_safari_transports_internal_2a5ed1c8ef.png)

#### 8.7.3 Nenhuma propriedade `transports` definida

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

![iOS Safari No Transports](https://www.corbado.com/website-assets/654c20429a4ea0f5059a19d1_ios_safari_no_transports_62cc32cf45.png)

#### 8.7.4 `allowCredentials` vazio

Como esperado, a maioria das formas de autenticação por passkey são permitidas: via Face
ID, via código QR e via chaves de segurança de hardware. Por alguma razão, os dispositivos
conhecidos não são exibidos.

![iOS Safari Empty AllowCredentials](https://www.corbado.com/website-assets/656e0e912483530de38bce47_ios_17_1_safari_17_1_empty_allow_Credentials_2a9f57c8f5.jpg)

Em seguida, para dispositivos com Windows 10, decidimos ir um nível mais além e analisar
como o comportamento se parece se o Bluetooth estiver desativado ou não disponível numa
máquina com Windows 10 em geral. Especialmente para dispositivos de desktop mais antigos,
este ainda é um cenário muito comum, pois esses dispositivos muitas vezes não têm um
módulo Bluetooth, tornando impossível a autenticação multiplataforma via código QR e
Bluetooth.

### 8.8 Windows 10 21H2 + Chrome 119

#### 8.8.1 Bluetooth Ativado

**8.8.1.1 transports: \[internal, hybrid]**

Como esperado, nenhuma passkey local corresponde, por isso é sugerido usar a passkey
noutro dispositivo (pois o sistema sabe que existe uma passkey para este utilizador -
primeira captura de ecrã) ou escolher ler o código QR (segunda captura de ecrã).

![Bluetooth Windows 10 21H2 Chrome Transports Internal Hybrid Stored Device](https://www.corbado.com/website-assets/655a41796c7b81432a8f8d0c_bluetooth_windows_10_21h2_chrome_transports_internal_hybrid_5ba8fc5778.png)

![Bluetooth Windows 10 21H2 Chrome Transports Internal Hybrid Selection](https://www.corbado.com/website-assets/655a420bfcb17d5a59e3b9b3_bluetooth_windows_10_21h2_chrome_transports_internal_hybrid_selection_cefe95683e.png)

**8.8.1.2 transports: \[internal]**

De forma bastante confusa, é-lhe solicitado que insira o seu código PIN do Windows Hello
(ou impressão digital / leitura facial, se configurado no dispositivo), mesmo que tenhamos
alterado o ID da credencial (portanto, não deveria encontrar a credencial, pois não está
especificada na propriedade [allowCredentials](https://www.corbado.com/glossary/allowcredentials)). No entanto,
após submeter o código PIN do Windows Hello, é lançado um erro:
"[NotAllowedError](https://www.corbado.com/blog/webauthn-errors): The operation either timed out or was not
allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![Bluetooth Windows 10 21H2 Chrome Transports Internal](https://www.corbado.com/website-assets/655a418dd296ce49e7790542_bluetooth_windows_10_21h2_chrome_transports_internal_2f821c99c4.png)

**8.8.1.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

![Bluetooth Windows 10 21H2 Chrome No Transports](https://www.corbado.com/website-assets/655a4198c91e9d877f8d18d2_bluetooth_windows_10_21h2_chrome_no_transports_8a81c90cb1.png)

**8.8.1.4 `allowCredentials` vazio**

Como esperado, todas as formas de autenticação por passkey são permitidas: via Windows
Hello, via código QR, via dispositivos conhecidos e via chaves de segurança de hardware.

![Bluetooth Windows 10 21H2 Chrome Empty AllowCredentials](https://www.corbado.com/website-assets/656e0ef2cb6b0e0081620646_bluetooth_windows_10_21h2_chrome_empty_allowcredentials_c9034b924b.png)

#### 8.8.2 Bluetooth Desativado

**8.8.2.1 transports: \[internal, hybrid]**

Esta é uma mensagem realmente confusa para os utilizadores, pois não é explicitamente
declarado o que devem fazer e como podem autenticar-se. A única opção que têm é clicar em
"Cancelar", tornando este cenário um beco sem saída.

![No Bluetooth Windows 10 21H2 Chrome Transports Internal Hybrid](https://www.corbado.com/website-assets/655a42691f4650d9c5f048eb_no_bluetooth_windows_10_21h2_chrome_transports_internal_hybrid_fe23b5d98c.png)

**8.8.2.2 transports: \[internal]**

Este comportamento é o mesmo do caso em que o Bluetooth está ativado. É muito confuso que
o utilizador seja solicitado a inserir o código PIN do Windows Hello (ou impressão digital
/ leitura facial, se configurado no dispositivo), mesmo que tenhamos alterado o ID da
credencial (portanto, não deveria encontrar a credencial, pois não está especificada na
propriedade allowCredentials). No entanto, após submeter o código PIN do Windows Hello, é
lançado um erro: "[NotAllowedError](https://www.corbado.com/blog/webauthn-errors): The operation either timed out
or was not allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![No Bluetooth Windows 10 21H2 Chrome Transports Internal](https://www.corbado.com/website-assets/655a42782e4725cfe619d0bd_no_bluetooth_windows_10_21h2_chrome_transports_internal_2c0239090a.png)

**8.8.2.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso a única opção que tem é usar uma chave de
segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma / autenticador
itinerante.

![No Bluetooth Windows 10 21H2 Chrome No Transports](https://www.corbado.com/website-assets/655a428606a44b7254f3b15b_no_bluetooth_windows_10_21h2_chrome_no_transports_10b4b7be67.png)

**8.8.2.4 `allowCredentials` vazio**

A autenticação por passkey só é possível via Windows Hello e chaves de segurança de
hardware.

![No Bluetooth Windows 10 21H2 Chrome Empty AllowCredentials](https://www.corbado.com/website-assets/656e0f12e540402d134edfe0_no_bluetooth_windows_10_21h2_chrome_empty_allowcredentials_8a51d98916.png)

### 8.9 Windows 10 21H2 + Edge 119

#### 8.9.1 Bluetooth Ativado

**8.9.1.1 transports: \[internal, hybrid]**

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![Bluetooth Windows 10 21H2 Edge Transports Internal Hybrid](https://www.corbado.com/website-assets/655a41d9ba4706dfb36cdc27_bluetooth_windows_10_21h2_edge_transports_internal_hybrid_ef0d00b7b7.png)

**8.9.1.2 transports: \[internal]**

De forma bastante confusa, é-lhe solicitado que insira o seu código PIN do Windows Hello
(ou impressão digital / leitura facial, se configurado no dispositivo), mesmo que tenhamos
alterado o ID da credencial (portanto, não deveria encontrar a credencial, pois não está
especificada na propriedade allowCredentials). No entanto, após submeter o código PIN do
Windows Hello, é lançado um erro: "[NotAllowedError](https://www.corbado.com/blog/webauthn-errors): The operation
either timed out or was not allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![Bluetooth Windows 10 21H2 Edge Transports Internal ](https://www.corbado.com/website-assets/655a41e9c91e9d877f8d69fd_bluetooth_windows_10_21h2_edge_transports_internal_a9be35d4e9.png)

**8.9.1.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

![Bluetooth Windows 10 21H2 Edge No Transports](https://www.corbado.com/website-assets/655a41faf4d3d4dd56d0a26c_bluetooth_windows_10_21h2_edge_no_transports_4e859da47f.png)

**8.9.1.4 `allowCredentials` vazio**

Como esperado, todas as formas de autenticação por passkey são permitidas: via Windows
Hello, via código QR e via chaves de segurança de hardware. Por alguma razão, os
dispositivos conhecidos não são exibidos.

![Bluetooth Windows 10 21H2 Edge Empty AllowCredentials](https://www.corbado.com/website-assets/656e0f3b6d7434294c3a1609_bluetooth_windows_10_21h2_edge_empty_allowcredentials_b809409ee2.png)

#### 8.9.2 Bluetooth Desativado

**8.9.2.1 transports: \[internal, hybrid]**

Esta é uma mensagem realmente confusa para os utilizadores, pois não é explicitamente
declarado o que devem fazer e como podem autenticar-se. A única opção que têm é clicar em
"Cancelar", tornando este cenário um beco sem saída.

![No Bluetooth Windows 10 21H2 Edge Transports Internal Hybrid](https://www.corbado.com/website-assets/655a429627bb0b39f6ce94c8_no_bluetooth_windows_10_21h2_edge_transports_internal_hybrid_e2ae87605f.png)

**8.9.2.2 transports: \[internal]**

Este comportamento é o mesmo do caso em que o Bluetooth está ativado. É muito confuso que
o utilizador seja solicitado a inserir o código PIN do Windows Hello (ou impressão digital
/ leitura facial, se configurado no dispositivo), mesmo que tenhamos alterado o ID da
credencial (portanto, não deveria encontrar a credencial, pois não está especificada na
propriedade allowCredentials). No entanto, após submeter o código PIN do Windows Hello, é
lançado um erro: "NotAllowedError: The operation either timed out or was not allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![No Bluetooth Windows 10 21H2 Edge Transports Internal](https://www.corbado.com/website-assets/655a42a263c9530593b69e9d_no_bluetooth_windows_10_21h2_edge_transports_internal_d125e7e90b.png)

**8.9.2.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso a única opção que tem é usar uma chave de
segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma / autenticador
itinerante.

![No Bluetooth Windows 10 21H2 Edge No Transports](https://www.corbado.com/website-assets/655a42ae341c12df9fc8d407_no_bluetooth_windows_10_21h2_edge_no_transports_3eea0c1f8c.png)

**8.9.2.4 `allowCredentials` vazio**

A autenticação por passkey só é possível via Windows Hello e chaves de segurança de
hardware.

![No Bluetooth Windows 10 21H2 Edge Empty AllowCredentials](https://www.corbado.com/website-assets/656e0f571d60cb40e25cf67b_no_bluetooth_windows_10_21h2_edge_empty_allowcredentials_9e62a2cb74.png)

### 8.10 Windows 10 22H2 + Chrome 119

#### 8.10.1 Bluetooth Ativado

**8.10.1.1 transports: \[internal, hybrid]**

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![Bluetooth Windows 10 22H2 Chrome Transports Internal Hybrid](https://www.corbado.com/website-assets/655a42cf056f1bc183bd3de9_bluetooth_windows_10_22h2_chrome_transports_internal_hybrid_7233c3d8c3.png)

**8.10.1.2 transports: \[internal]**

De forma bastante confusa, é-lhe solicitado que insira o seu código PIN do Windows Hello
(ou impressão digital / leitura facial, se configurado no dispositivo), mesmo que tenhamos
alterado o ID da credencial (portanto, não deveria encontrar a credencial, pois não está
especificada na propriedade allowCredentials). No entanto, após submeter o código PIN do
Windows Hello, é lançado um erro: "NotAllowedError: The operation either timed out or was
not allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![Bluetooth Windows 10 22H2 Chrome Transports Internal ](https://www.corbado.com/website-assets/655a42e631cdcff15a6b0005_bluetooth_windows_10_22h2_chrome_transports_internal_70cb5c42ca.png)

**8.10.1.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

![Bluetooth Windows 10 22H2 Chrome No Transports](https://www.corbado.com/website-assets/655a42f5341c12df9fc94321_bluetooth_windows_10_22h2_chrome_no_transports_a1c084933a.png)

**8.10.1.4 `allowCredentials` vazio**

Como esperado, todas as formas de autenticação por passkey são permitidas: via Windows
Hello, via código QR e via chaves de segurança de hardware. Por alguma razão, os
dispositivos conhecidos não são exibidos.

![Bluetooth Windows 10 22H2 Chrome Empy AllowCredentials](https://www.corbado.com/website-assets/656e0f6d1df07c2e45039298_bluetooth_windows_10_22h2_chrome_empty_allowcredentials_d14bf6b868.png)

#### 8.10.2 Bluetooth Desativado

**8.10.2.1 transports: \[internal, hybrid]**

Esta é uma mensagem realmente confusa para os utilizadores, pois não é explicitamente
declarado o que devem fazer e como podem autenticar-se. A única opção que têm é clicar em
"Cancelar", tornando este cenário um beco sem saída. Por alguma razão, partes do modal de
Segurança do Windows também são exibidas em alemão (um segundo idioma instalado neste
dispositivo).

![No Bluetooth Windows 10 22H2 Chrome Transports Internal Hybrid](https://www.corbado.com/website-assets/655a4361fcb17d5a59e49689_no_bluetooth_windows_10_22h2_chrome_transports_internal_hybrid_46e4dd0f06.png)

**8.10.2.2 transports: \[internal]**

Este comportamento é o mesmo do caso em que o Bluetooth está ativado. É muito confuso que
o utilizador seja solicitado a inserir o código PIN do Windows Hello (ou impressão digital
/ leitura facial, se configurado no dispositivo), mesmo que tenhamos alterado o ID da
credencial (portanto, não deveria encontrar a credencial, pois não está especificada na
propriedade allowCredentials). No entanto, após submeter o código PIN do Windows Hello, é
lançado um erro: "NotAllowedError: The operation either timed out or was not allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![No Bluetooth Windows 10 22H2 Chrome Transports Internal ](https://www.corbado.com/website-assets/655a43754f327a0ea96c0f2f_no_bluetooth_windows_10_22h2_chrome_transports_internal_522e8d235f.png)

**8.10.2.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso a única opção que tem é usar uma chave de
segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma / autenticador
itinerante.

![No Bluetooth Windows 10 22H2 Chrome No Transports ](https://www.corbado.com/website-assets/655a439c6c7b81432a90cd09_no_bluetooth_windows_10_22h2_chrome_no_transports_64de3d513a.png)

**8.10.2.4 `allowCredentials` vazio**

A autenticação por passkey só é possível via Windows Hello e chaves de segurança de
hardware.

![No Bluetooth Windows 10 22H2 Chrome Empy AllowCredentials](https://www.corbado.com/website-assets/656e0f96d01b45cb7af49bd0_no_bluetooth_windows_10_22h2_chrome_empty_allowcredentials_3e15754828.png)

### 8.11 Windows 10 22H2 + Edge 119

#### 8.11.1 Bluetooth Ativado

**8.11.1.1 transports: \[internal, hybrid]**

Como esperado, nenhuma passkey local corresponde, por isso é sugerido ler o código QR e
usar a passkey noutro dispositivo (pois o sistema sabe que existe uma passkey para este
utilizador).

![Bluetooth Windows 10 22H2 Edge Transports Internal Hybrid](https://www.corbado.com/website-assets/655a4304fcb17d5a59e4440a_bluetooth_windows_22h2_edge_transports_internal_hybrid_bda614e4bf.png)

**8.11.1.2 transports: \[internal]**

De forma bastante confusa, é-lhe solicitado que insira o seu código PIN do Windows Hello
(ou impressão digital / leitura facial, se configurado no dispositivo), mesmo que tenhamos
alterado o ID da credencial (portanto, não deveria encontrar a credencial, pois não está
especificada na propriedade allowCredentials). No entanto, após submeter o código PIN do
Windows Hello, é lançado um erro: "NotAllowedError: The operation either timed out or was
not allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![Bluetooth Windows 10 22H2 Edge Transports Internal ](https://www.corbado.com/website-assets/655a43410ef35b5c92083b17_bluetooth_windows_10_22h2_edge_transports_internal_38d6fb5bcd.png)

**8.11.1.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso é sugerido ler o código QR ou usar uma chave
de segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma /
autenticador itinerante.

![Bluetooth Windows 10 22H2 Edge No Transports ](https://www.corbado.com/website-assets/655a4351056f1bc183bd7dad_bluetooth_windows_10_22h2_edge_no_transports_3c0dc6ae7d.png)

**8.11.1.4 `allowCredentials` vazio**

Como esperado, todas as formas de autenticação por passkey são permitidas: via Windows
Hello, via código QR e via chaves de segurança de hardware. Por alguma razão, os
dispositivos conhecidos não são exibidos.

![Bluetooth Windows 10 22H2 Edge Empty AllowCredentials](https://www.corbado.com/website-assets/656e0fab2483530de38bce47_bluetooth_windows_10_22h2_edge_empty_allowcredentials_6f687e0ba4.png)

#### 8.11.2 Bluetooth Desativado

**8.11.2.1 transports: \[internal, hybrid]**

Esta é uma mensagem realmente confusa para os utilizadores, pois não é explicitamente
declarado o que devem fazer e como podem autenticar-se. A única opção que têm é clicar em
"Cancelar", tornando este cenário um beco sem saída.

![No Bluetooth Windows 10 22H2 Edge Transports Internal Hybrid](https://www.corbado.com/website-assets/655a43bb58ede3292022c780_no_bluetooth_windows_10_22h2_edge_transports_internal_hybrid_fde74a565b.png)

**8.11.2.2 transports: \[internal]**

Este comportamento é o mesmo do caso em que o Bluetooth está ativado. É muito confuso que
o utilizador seja solicitado a inserir o código PIN do Windows Hello (ou impressão digital
/ leitura facial, se configurado no dispositivo), mesmo que tenhamos alterado o ID da
credencial (portanto, não deveria encontrar a credencial, pois não está especificada na
propriedade allowCredentials). No entanto, após submeter o código PIN do Windows Hello, é
lançado um erro: "NotAllowedError: The operation either timed out or was not allowed. See:
[https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations- client.](https://www.w3.org/TR/webauthn-2/#sctn-privacy-considerations-client)"
Do ponto de vista do utilizador, este é um comportamento bastante confuso, mas faz
sentido, pois poderia fornecer informações sobre as passkeys do utilizador sem o seu
consentimento.

![No Bluetooth Windows 10 22H2 Edge Transports Internal](https://www.corbado.com/website-assets/655a43c99e315820aa7f52dd_no_bluetooth_windows_10_22h2_edge_transports_internal_8b67007e33.png)

**8.11.2.3 Nenhuma propriedade `transports` definida**

Nenhuma passkey local corresponde, por isso a única opção que tem é usar uma chave de
segurança de hardware (por exemplo, YubiKey) / autenticador multiplataforma / autenticador
itinerante.

![No Bluetooth Windows 10 22H2 Edge No Transports ](https://www.corbado.com/website-assets/655a43d487a5a72a403ed731_no_bluetooth_windows_10_22h2_edge_no_transports_68b9f0f7a2.png)

**8.11.2.4 `allowCredentials` vazio**

A autenticação por passkey só é possível via Windows Hello e chaves de segurança de
hardware.

![No Bluetooth Windows 10 22H2 Edge Empty AllowCredentials](https://www.corbado.com/website-assets/656e0fc8ebf49396fbbf5852_no_bluetooth_windows_10_22h2_edge_empty_allowcredentials_deaa7e2395.png)

## 9. Recomendações para Programadores

### 9.1 Dicas de Implementação

- Use bibliotecas e frameworks que abstraem algumas das complexidades da API WebAuthn
  pura.
- Considere cenários de autenticação multiplataforma desde o início para garantir que uma
  base ampla de utilizadores possa beneficiar da sua implementação de passkeys. Dependendo
  das suas escolhas de design, também pode oferecer métodos de início de sessão
  alternativos nestes cenários.
- Desenvolva mecanismos de recurso para cenários onde a autenticação multiplataforma de
  passkey (transporte híbrido) possa não ser possível devido a limitações do dispositivo.
- A maior decisão de design é decidir se quer promover a autenticação de passkey
  multiplataforma via código QR / Bluetooth (transporte híbrido) e torná-la um método
  proeminente para autenticação de passkey ou usar dicas para não a promover ativamente.
  Neste último caso, tenta-se sempre usar imediatamente as passkeys armazenadas
  internamente e só se nenhuma passkey interna for encontrada, um código QR para
  autenticação multiplataforma (transporte híbrido) é exibido. Isto precisa de ser
  definido nas opções do seu servidor WebAuthn nas propriedades
  [excludeCredentials](https://www.corbado.com/glossary/excludecredentials) e allowCredentials. Na propriedade
  [excludeCredentials](https://www.corbado.com/glossary/excludecredentials) do seu servidor WebAuthn, pode ver
  informações de transporte sobre credenciais já criadas. Na propriedade allowCredentials,
  pode especificar o comportamento no processo de início de sessão (ver testes
  [acima](#8-teste-na-vida-real-comportamento-da-passkey-com-transporte-hibrido)).
- Além disso, não pode impedir completamente a autenticação de passkey multiplataforma
  (transporte híbrido) (ver os testes acima com `transports: [internal]`), por isso
  precisa de estar preparado para que os seus utilizadores encontrem este método e tenham
  perguntas. A ocorrência desta autenticação multiplataforma (transporte híbrido) ocorrerá
  em particular se os utilizadores começarem a eliminar passkeys localmente.

### 9.2 Estratégias Educacionais

- Crie guias e tutoriais abrangentes que orientem os utilizadores através do processo de
  autenticação de passkey multiplataforma (transporte híbrido).
- Use dicas de ferramentas na aplicação e secções de ajuda contextual para guiar os
  utilizadores durante a sua primeira experiência de autenticação de passkey
  multiplataforma (transporte híbrido).
- Forneça [FAQs](https://www.corbado.com/faq) e secções de resolução de problemas no seu site ou dentro da
  aplicação.

### 9.3 Considerações sobre Acesso Temporário

- Implemente sessões com limite de tempo para inícios de sessão com passkey via código QR
  ou Bluetooth para garantir que o acesso é apenas temporário e seguro.
- Garanta que a autenticação de passkey multiplataforma (transporte híbrido) não
  compromete quaisquer protocolos de segurança existentes, mantendo a integridade dos
  dados do utilizador.
- Considere as implicações de privacidade e garanta que qualquer acesso temporário
  concedido via autenticação de passkey multiplataforma (transporte híbrido) seja
  registado e monitorizado de acordo com as melhores práticas de segurança.

## 10. Conclusão: Passkeys com Código QR / Bluetooth

A autenticação de passkey multiplataforma via código QR / Bluetooth (transporte híbrido)
oferece um equilíbrio entre segurança e UX. No entanto, é um processo inteiramente novo
para a maioria dos utilizadores e pode causar muitas situações confusas, pelo que é
necessário pensar cuidadosamente se o quer promover.

Esperamos ter conseguido lançar alguma luz sobre o tema da autenticação de passkey
multiplataforma (transporte híbrido) via código QR / Bluetooth, explicar como configurar
as coisas e como o comportamento se parece em diferentes combinações de dispositivo /
navegador. Se tiver alguma questão, sinta-se à vontade para nos contactar através da nossa
[comunidade de passkeys](https://bit.ly/passkeys-community) ou subscrever o nosso
[Substack de passkeys](https://passkeys.substack.com/). Vamos tornar a Internet um lugar
mais seguro, divulgando as passkeys.
