Aprenda como a API Signal do WebAuthn permite a exclusão de passkeys e a atualização de metadados (user.name, user.displayName) de forma transparente nos autenticadores do lado do cliente.
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.
O ecossistema de passkeys está em evolução. Para facilitar a mudança, o padrão WebAuthn subjacente evolui rapidamente. Novas funcionalidades geralmente começam com uma explicação técnica no GitHub e depois evoluem para um pull request no padrão quando são suficientemente discutidas. Recentemente, este pull request foi adicionado ao rascunho do padrão como a API Signal do WebAuthn. Neste artigo, vamos abordar:
Na data de atualização deste post, em janeiro de 2025, a API Signal do WebAuthn está habilitada por padrão desde o Chrome 132 e era anteriormente conhecida como Reporting API, antes de ser renomeada para evitar conflitos com outra API de mesmo nome.
Recent Articles
A API Signal do WebAuthn aborda casos de uso específicos relacionados ao gerenciamento de passkeys no lado do cliente. Especificamente, ela ajuda a manter as informações sincronizadas entre a parte confiável (RP) e os autenticadores que fazem parte dos sistemas operacionais do lado do cliente. Existem os seguintes casos de uso importantes:
Quando uma passkey é criada, ela inclui várias informações: user.id
, user.name
e user.displayName
. A passkey em si é identificada através do ID da Credencial exclusivo.
user.id
é crucial porque é usado para a correspondência real da passkey com a conta do usuário.A ilustração a seguir mostra uma estrutura de banco de dados típica e simples que explica quais informações geralmente seriam armazenadas em cada campo:
É importante entender que, embora user.name
(geralmente um endereço de e-mail) e user.displayName
(um nome mais amigável e legível) ajudem o usuário a identificar sua conta na interface de seleção, a associação real entre uma passkey e uma conta é mantida através do user.id
e do ID da Credencial:
user.id
Um problema surge quando o user.name
, que pode ser um endereço de e-mail, muda. Atualmente, não há um mecanismo para atualizar essa mudança diretamente no autenticador do lado do cliente. O user.name
pode mudar por vários motivos, como quando um usuário atualiza seu endereço de e-mail. Apesar dessa mudança nos metadados da conta no lado do servidor, o user.name
antigo continuará a aparecer na interface de seleção de credenciais, o que pode causar confusão para os usuários.
A solução alternativa para esse problema é criar uma nova passkey com o user.name
atualizado e o mesmo user.id
, e então sobrescrever a passkey existente. No entanto, essa abordagem é inconveniente por várias razões:
user.id
pode ter apenas uma passkey por ID da parte confiável, o que significa que a passkey antiga deve ser substituída por uma nova, o que é um passo extra.Endereços de e-mail, números de telefone e outros identificadores podem mudar regularmente. Sem um método direto para atualizar user.name
e user.displayName
diretamente no autenticador, os usuários podem encontrar um problema persistente em que veem e precisam selecionar uma passkey associada ao seu endereço de e-mail antigo. Essa situação prejudica a experiência fluida que as passkeys visam proporcionar. A API Signal do WebAuthn visa resolver esse problema, permitindo que as partes confiáveis relatem atualizações nos metadados das passkeys sem exigir a criação de novas. Antes de explicarmos como implementar a API Signal, vamos explorar o segundo caso de uso importante que ela aborda.
Outro caso de uso crucial é a exclusão de passkeys no autenticador do lado do cliente. Com o tempo, os usuários podem revogar credenciais através da lista de gerenciamento de passkeys ou excluir suas contas, e torna-se necessário garantir que essas credenciais sejam removidas do autenticador do lado do cliente para evitar que apareçam em futuras interfaces de seleção de credenciais (UI Condicional / preenchimento automático de passkey).
A necessidade dessa funcionalidade surge em vários cenários:
Do ponto de vista do usuário, é difícil entender que uma exclusão nas configurações de sua conta, em um diálogo como o acima, não leva à remoção da passkey neste cliente.
Sem um método direto para excluir passkeys no lado do cliente, essas credenciais desatualizadas ou inválidas continuam a poluir a interface de seleção, levando à confusão. Os usuários podem ver e tentar usar passkeys que não são mais válidas, resultando em tentativas de autenticação falhas e uma má experiência do usuário.
A implementação da API Signal do WebAuthn envolve vários passos e considerações para garantir que a funcionalidade seja integrada de forma correta e segura. A API Signal permite que as partes confiáveis (RPs) atualizem ou excluam credenciais de passkey no autenticador do lado do cliente. Esta seção descreve as principais considerações e passos para a implementação.
Ao implementar a API Signal do WebAuthn, é crucial ter em mente as seguintes considerações:
Preservação da Privacidade: A API Signal do WebAuthn é projetada para preservar a privacidade do usuário, pois é um dos fundamentos do WebAuthn. Isso significa que não há feedback fornecido à RP sobre se a alteração solicitada foi processada. A API opera silenciosamente para evitar qualquer vazamento potencial de informações sobre o estado das credenciais.
Disponibilidade do Autenticador: A eficácia da API Signal do WebAuthn depende da disponibilidade do autenticador. Isso inclui tanto a disponibilidade física (por exemplo, a presença de uma chave de segurança) quanto o suporte de software ( por exemplo, compatibilidade do navegador e do sistema operacional). O navegador só pode realizar ações se o autenticador estiver acessível e suportar as operações necessárias sem precisar de autenticação biométrica.
Restrições de Domínio: A API garante que apenas a parte confiável associada a um domínio específico possa solicitar alterações nas credenciais relacionadas a esse domínio. Esta é uma medida de segurança para evitar modificações não autorizadas por terceiros.
ID da Credencial como Chave: Ao referenciar passkeys, o ID da Credencial é a chave primária usada pela API Signal do WebAuthn. Este ID identifica unicamente a passkey no autenticador do lado do cliente. A API permite que as RPs alterem metadados associados às passkeys ou sinalizem que certas passkeys não devem mais ser acessadas, mas apenas através do ID da Credencial. Caso um autenticador não conheça um ID de Credencial específico, ele o ignorará silenciosamente.
Essas considerações são essenciais para entender os aspectos mais importantes do funcionamento correto da API Signal do WebAuthn.
A API Signal do WebAuthn fornece um mecanismo simplificado para que as partes confiáveis (RPs) atualizem os metadados associados às passkeys nos autenticadores do lado do cliente. Isso é especialmente importante para garantir que os usuários vejam informações precisas e atualizadas na interface de seleção de credenciais sem precisar criar novas passkeys desnecessariamente. Veja como a API permite que isso aconteça:
Atualizando Metadados com signalCurrentUserDetails(options)
O método signalCurrentUserDetails(options)
na API Signal é projetado especificamente para atualizar metadados de passkeys. Este método permite que as RPs forneçam os valores atuais para user.name
e user.displayName
.
Veja como o processo funciona (consulte também o padrão WebAuthn Nível 3).
signalCurrentUserDetails(options)
inclui o rp.id
, user.id
e os valores atualizados para user.name
e user.displayName
.PublicKeyCredential.signalCurrentUserDetails({ rpId: "example.com", userId: "aabbcc", // user handle, base64url. name: "New user name", displayName: "New display name", });
Atualizando os Metadados Locais: Procure por credenciais disponíveis localmente (no autenticador) que correspondam ao rpId
e userId
. Para todas as credenciais correspondentes, o autenticador atualizará o name
e o displayName
da credencial.
Preservação da Privacidade: O processo é projetado para preservar a privacidade. A API Signal não fornece feedback à RP sobre se as atualizações foram processadas com sucesso, evitando qualquer vazamento de informações sobre o estado das credenciais.
Consistência Entre Dispositivos: Ao executar regularmente os métodos signalCurrentUserDetails(options)
, as RPs podem garantir que os metadados das passkeys permaneçam consistentes em diferentes dispositivos e plataformas onde o usuário pode se autenticar. Essa abordagem reduz as chances de informações desatualizadas ou incorretas serem exibidas na interface de seleção de credenciais.
Na captura de tela acima, você pode ver como o Google Chrome sinaliza tal atualização para o usuário. A API Signal do WebAuthn faz parte do Chrome 130 e pode ser testada com o Google Password Manager no desktop se a flag de recursos experimentais da web estiver ativada.
A API Signal do WebAuthn fornece mecanismos para que as partes confiáveis (RPs) sinalizem a exclusão de passkeys dos autenticadores do lado do cliente. Isso é essencial para garantir que credenciais desatualizadas ou inválidas não apareçam na interface de seleção de credenciais, mantendo assim uma experiência de usuário simplificada e segura. Existem dois métodos para excluir as passkeys localmente: signalUnknownCredential(options)
e signalAllAcceptedCredentials)(options)
. O primeiro pode ser usado em situações em que o usuário não está autenticado, enquanto o segundo pode ser usado quando o usuário está autenticado. Portanto, o segundo deve ser preferido por razões de privacidade.
Veja como os dois métodos funcionam:
signalUnknownCredential(options)
inclui o rpId
(ID da parte confiável) e o credentialId
(o identificador único da credencial a ser excluída).PublicKeyCredential.signalUnknownCredential({ rpId: "example.com", credentialId: "aabbcc", // credential id the user just tried, base64url });
Chamando o Método: As RPs chamam este método sempre que detectam que uma credencial deve ser excluída. Isso pode ocorrer imediatamente após uma tentativa de autenticação com uma credencial inválida, durante a exclusão da conta ou quando um usuário revoga uma credencial através das configurações da conta.
Lidando com o Método: Quando o método signalUnknownCredential(options)
é chamado, o autenticador do lado do cliente tenta encontrar credenciais que correspondam ao rpId
e credentialID
especificados para omissão. Dependendo das capacidades do autenticador, a credencial é removida ou um procedimento específico do autenticador é empregado para ocultar a credencial em futuras cerimônias de autenticação.
signalAllAcceptedCredentials(options)
inclui o rpId
(ID da parte confiável), userId
e uma lista de IDs de Credencial válidos allAcceptedCredentialIds
(lista de identificadores únicos de credenciais que devem ser mantidas).PublicKeyCredential.signalAllAcceptedCredentials({ rpId: "example.com", userId: "aabbcc", // user handle, base64url. allAcceptedCredentialIds: ["bb"], });
Chamando o Método: As RPs chamam este método sempre que detectam que uma credencial deve ser excluída e sinalizam uma lista de credenciais válidas. Este método deve ser preferido em vez de signalUnknownCredential(options)
para excluir credenciais.
Lidando com o Método: Quando o método signalAllAcceptedCredentials(options)
é chamado, o autenticador do lado do cliente corresponde ao rpId
e userId
. O autenticador procura todas as credenciais locais que correspondem a rpId
e userId
. O resultado é comparado com allAcceptedCredentialIds
. Se houver credenciais locais que não estão em allAcceptedCredentialIds
, essas credenciais são removidas localmente (ou ocultadas, dependendo do autenticador).
Reexibir Credenciais: Se uma credencial foi apenas ocultada (dependendo do autenticador) e agora faz parte de allAcceptedCredentialIds
, então essa credencial estará presente novamente em futuras cerimônias de autenticação.
Dicas Úteis:
signalAllAcceptedCredentials(options)
, é importante notar que os autenticadores podem nem sempre estar conectados no momento em que este método é executado. Como resultado, as partes confiáveis podem considerar executar signalAllAcceptedCredentials(options)
periodicamente, como durante cada login, para garantir que todas as credenciais estejam atualizadas.allAcceptedCredentialIds
). Credenciais que não estão incluídas nesta lista podem ser ocultadas ou removidas pelo autenticador, potencialmente de forma irreversível. Para evitar que credenciais válidas sejam omitidas por engano, é crucial garantir que a lista esteja completa. Se um ID de credencial válido for acidentalmente deixado de fora, ele deve ser readicionado a signalAllAcceptedCredentials(options)
o mais rápido possível para torná-lo visível novamente, supondo que o autenticador suporte isso.Na captura de tela acima, você pode ver como o Google Chrome sinaliza exclusões. A API Signal do WebAuthn faz parte do Chrome 132 e pode ser testada com o Google Password Manager no desktop.
Para implementar eficazmente a API Signal do WebAuthn e garantir a sincronização transparente dos metadados de passkeys entre os autenticadores do lado do cliente, considere as seguintes recomendações:
signalAllAcceptedCredentials(options)
após cada login bem-sucedido: Essa abordagem garante que todos os metadados e IDs de credencial sejam atualizados em um único método, simplificando o processo e mantendo a consistência entre dispositivos e plataformas, ao mesmo tempo que desativa credenciais excluídas ou obsoletas.signalUnknownCredential(options)
para implantações em grande escala: Considere usar mensagens em tempo real com o método signalUnknownCredential(options)
em implantações em grande escala ou quando houver necessidade de atualizações imediatas. Este método pode aumentar a eficiência e a precisão do gerenciamento de credenciais, garantindo que credenciais inválidas ou desatualizadas sejam prontamente removidas da interface de seleção.Seguindo estas recomendações, você pode implementar a API Signal do WebAuthn de forma eficaz assim que ela for suportada, garantindo que os metadados das passkeys permaneçam atualizados e consistentes em todos os autenticadores do lado do cliente, proporcionando assim uma experiência de usuário fluida e segura para as passkeys.
O padrão WebAuthn está em contínua evolução, tornando-se mais rico em funcionalidades a cada mês. A introdução da API Signal do WebAuthn é um passo significativo no gerenciamento de metadados e exclusões de passkeys em autenticadores do lado do cliente. Esta API aborda os casos de uso cruciais de manter as informações sincronizadas entre as partes confiáveis (RPs) e os autenticadores, e garantir que passkeys inválidas ou desatualizadas sejam removidas, melhorando assim a experiência do usuário.
user.name
e user.displayName
, que podem causar confusão quando as credenciais são apresentadas na interface de seleção. Além disso, ajuda a manter uma interface de seleção de credenciais limpa e segura, removendo passkeys revogadas ou excluídas.À medida que o padrão WebAuthn evolui, ele se beneficia dos diversos interesses de seus participantes, que impulsionam diferentes partes do padrão. Ficar de olho nesses desenvolvimentos é crucial para se manter atualizado com as últimas melhorias e garantir que as implementações permaneçam alinhadas com as melhores práticas e padrões mais recentes. A comunidade WebAuthn continua a impulsionar a inovação, tornando a autenticação mais segura e amigável ao usuário.
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