Guia para desenvolvedores sobre chaves de acesso para partes confiáveis

Aprenda a integrar chaves de acesso ao seu serviço.

Anatomia de um sistema de chaves de acesso

Um sistema de chaves de acesso consiste em alguns componentes:

  • Parte confiável: no contexto da chave de acesso, uma parte confiável (RP, na sigla em inglês) processa a emissão e a autenticação da chave de acesso. O RP precisa operar um cliente (um site ou app que cria ou autentica com chaves de acesso) e um servidor para registrar, armazenar e verificar as credenciais geradas pelas chaves de acesso no cliente. Um aplicativo móvel de chave de acesso precisa ser vinculado a um domínio de servidor RP usando o mecanismo de associação fornecido pelo SO, como Links de ativos digitais.
  • Authenticator: um dispositivo de computação, como um smartphone, tablet, laptop ou computador desktop, que pode criar e verificar chaves de acesso usando o recurso de bloqueio de tela oferecido pelo sistema operacional.
  • Gerenciador de senhas: software instalado nos dispositivos do usuário final que serve, armazena e sincroniza chaves de acesso, como o Gerenciador de senhas do Google.

Fluxo de registro

Use a API WebAuthn em um site ou a biblioteca do Gerenciador de credenciais em um app Android para criar e registrar uma nova chave de acesso.

Para criar uma nova chave de acesso, você precisa fornecer alguns componentes principais:

  • ID da RP: informe o ID da parte confiável na forma de um domínio da Web.
  • Informações do usuário: ID, nome de usuário e nome de exibição do usuário.
  • Credenciais a serem excluídas: informações sobre chaves de acesso armazenadas anteriormente para evitar o registro duplicado.
  • Tipos de chaves de acesso: se você quer usar o próprio dispositivo ("autenticador de plataforma") como autenticador ou uma chave de segurança removível ("autenticador de roaming / entre plataformas"). Além disso, os chamadores podem especificar se a credencial deve ser detectável para que o usuário possa selecionar uma conta para fazer login.

Quando um RP solicita a criação de uma chave de acesso e o usuário a verifica com um desbloqueio de tela, uma nova chave de acesso é criada e uma credencial de chave pública é retornada. Envie isso ao servidor e armazene o ID da credencial e a chave pública para autenticação futura.

Fluxo de registro

Saiba como criar e registrar uma chave de acesso em detalhes:

Fluxo de autenticação

Use a API WebAuthn em um site ou a biblioteca Credential Manager em um app Android para autenticar com uma chave de acesso registrada.

Para autenticar com uma chave de acesso, é necessário fornecer alguns componentes principais:

  • ID da RP: informe o ID da parte confiável na forma de um domínio da Web.
  • Desafio: um desafio gerado pelo servidor que impede ataques de repetição.

Quando um RP solicita uma autenticação com uma chave de acesso e o usuário a verifica com um desbloqueio de tela, uma credencial de chave pública é retornada. Envie isso ao servidor e verifique a assinatura com a chave pública armazenada.

Fluxo de autenticação

Saiba como autenticar com uma chave de acesso em detalhes:

Integrações do lado do servidor

Ao criar uma chave de acesso, o servidor precisa fornecer parâmetros importantes, como um desafio, informações do usuário, IDs de credenciais a serem excluídos e muito mais. Em seguida, ele verifica a credencial de chave pública criada enviada pelo cliente e armazena a chave pública no banco de dados. Para autenticar com uma chave de acesso, o servidor precisa validar cuidadosamente a credencial e verificar a assinatura para permitir que o usuário faça login.

Saiba mais nos nossos guias do lado do servidor:

Mecanismos de autenticação legados

Ao oferecer suporte a chaves de acesso no seu serviço atual, a transição do mecanismo de autenticação mais antigo, como senhas, para chaves de acesso não vai acontecer em um dia. Sabemos que você pode querer eliminar o método de autenticação mais fraco assim que possível, mas isso pode confundir os usuários ou deixar alguns deles para trás. Recomendamos manter o método de autenticação atual por enquanto.

Há alguns motivos para isso:

  • Há usuários em um ambiente incompatível com chaves de acesso: o suporte a chaves de acesso está sendo ampliado em vários sistemas operacionais e navegadores, mas quem usa versões mais antigas ainda não pode usar chaves de acesso.
  • O ecossistema de chaves de acesso ainda não está maduro: o ecossistema de chaves de acesso está em evolução. Os detalhes da UX e a compatibilidade técnica entre diferentes ambientes podem melhorar.
  • Os usuários talvez ainda não estejam prontos para usar uma chave de acesso: algumas pessoas hesitam em adotar novidades. À medida que o ecossistema de chaves de acesso amadurece, as pessoas entendem como elas funcionam e por que são úteis.

Revisite seu mecanismo de autenticação atual

Embora as chaves de acesso tornem sua autenticação mais simples e segura, manter os mecanismos antigos é como deixar uma brecha. Recomendamos que você revise e melhore seus mecanismos de autenticação atuais.

Senhas

Criar e gerenciar senhas fortes para cada site são tarefas difíceis para os usuários. Recomendamos usar um gerenciador de senhas integrado ao sistema ou independente. Ao fazer um pequeno ajuste no formulário de login, sites e apps podem fazer uma grande diferença na segurança e na experiência de login. Confira como fazer essas mudanças:

Autenticação de dois fatores

Embora o uso de um gerenciador de senhas ajude os usuários a lidar com senhas, nem todos os usuários usam esse tipo de ferramenta. Pedir uma credencial adicional chamada senha única (OTP) é uma prática comum para proteger esses usuários. Normalmente, as OTPs são fornecidas por e-mail, mensagem SMS ou um app autenticador, como o Google Authenticator. Como os OTPs geralmente são um texto curto gerado dinamicamente e válido apenas por um período limitado, a probabilidade de sequestro de contas é menor. Esses métodos não são tão robustos quanto uma chave de acesso, mas são muito melhores do que deixar os usuários apenas com uma senha.

Se você selecionar o SMS como forma de entregar um OTP, confira as seguintes práticas recomendadas para simplificar a experiência do usuário ao inserir o OTP.

Federação da identidade

A federação de identidade é outra opção para permitir que os usuários façam login com segurança e facilidade. Com a federação de identidade, sites e apps permitem que os usuários façam login usando a identidade de um provedor de identidade de terceiros. Por exemplo, o Fazer login com o Google oferece ótimas conversões para desenvolvedores, e os usuários acham mais fácil e preferível à autenticação baseada em senhas. A federação de identidades é complementar às chaves de acesso. É ótimo para se inscrever, já que o site ou app pode receber informações básicas de perfil do usuário em uma única etapa, enquanto as chaves de acesso são ótimas para simplificar a reautenticação.

Lembre-se de que, depois que o Chrome desativar os cookies de terceiros em 2024, alguns sistemas de federação de identidade poderão ser afetados, dependendo de como foram criados. Para reduzir o impacto, uma nova API do navegador chamada Federated Credential Management API (FedCM, na sigla em inglês) está sendo desenvolvida. Se você administra um provedor de identidade, confira os detalhes e saiba se precisa adotar a FedCM.

O login por link mágico é um método de autenticação em que um serviço envia um link de login por e-mail para que o usuário possa clicar nele e se autenticar. Isso ajuda os usuários a fazer login sem precisar lembrar de uma senha, mas a troca entre o navegador/app e o cliente de e-mail pode ser um problema. Além disso, como o mecanismo de autenticação depende do e-mail, a segurança fraca do provedor de e-mail pode colocar as contas dos usuários em risco.

Recursos de aprendizagem

Web

Para integrar chaves de acesso ao seu site, use a API Web Authentication (WebAuthn). Para saber mais, confira os seguintes recursos:

Android

Para integrar chaves de acesso ao seu app Android, use a biblioteca Credential Manager. Para saber mais, consulte os seguintes recursos:

UX

Confira as recomendações de experiência do usuário com chaves de acesso: