Guia do desenvolvedor de chaves de acesso para terceiros confiáveis

Saiba como 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. A RP precisa operar um cliente, um site ou app que crie chaves de acesso ou faça a autenticação com chaves de acesso, e um servidor para registrar, armazenar e verificar as credenciais geradas por elas no cliente. Um aplicativo para dispositivos móveis de chave de acesso precisa estar vinculado a um domínio de servidor RP usando o mecanismo de associação fornecido pelo SO, como Digital Asset Links.
  • Authenticator: um dispositivo de computação, como 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 disponibiliza, 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 chave de acesso, há alguns componentes importantes a serem fornecidos:

  • ID da RP: forneça o ID da parte confiável no formato de um domínio da Web.
  • Informações do usuário: o ID do usuário, o nome de usuário e um nome de exibição.
  • Credenciais a serem excluídas: informações sobre chaves de acesso armazenadas anteriormente para evitar registros duplicados.
  • Tipos de chave de acesso: indica se o dispositivo é usado ("autenticador de plataforma") como autenticador ou uma chave de segurança removível ("autenticador de várias plataformas / roaming"). Além disso, os autores das chamadas podem especificar se a credencial será detectável. Assim, o usuário poderá selecionar uma conta para fazer login.

Depois que uma 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-os para o 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 do Gerenciador de credenciais em um app Android para autenticar com uma chave de acesso registrada.

Para autenticar com uma chave de acesso, há alguns componentes importantes a serem fornecidos:

  • ID da RP: forneça o ID da parte confiável no formato de um domínio da Web.
  • Desafio: um desafio gerado pelo servidor que impede ataques repetidos.

Depois que uma 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-a para o servidor e verifique a assinatura com a chave pública armazenada.

Fluxo de autenticação

Saiba em detalhes como autenticar com uma chave de acesso:

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 do 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.

No entanto, criar um servidor de chave de acesso por conta própria não é vantajoso e pode causar bugs que podem levar a um incidente crítico de segurança. Recomendamos o uso de uma das bibliotecas de código aberto disponíveis ou uma solução que possa ajudar a acelerar a integração das chaves de acesso.

Para encontrar a lista de bibliotecas de código aberto, consulte a seção Bibliotecas do passkeys.dev ou uma lista de bibliotecas WebAuthn de origem coletiva (links em inglês). Para encontrar uma solução, a FIDO Alliance tem uma lista de servidores FIDO2 certificados (em inglês).

Mecanismos de autenticação (legados) atuais

Quando você oferece suporte a chaves de acesso no serviço atual, a transição do mecanismo de autenticação mais antigo, como senhas, para chaves de acesso, não ocorre em um dia. Sabemos que você provavelmente eliminaria o método de autenticação mais fraco o mais rápido possível, mas isso pode confundir os usuários ou deixar alguns para trás. Por enquanto, recomendamos manter o método de autenticação atual.

Há alguns motivos para isso:

  • Há usuários em um ambiente incompatível com chaves de acesso: o suporte a chaves de acesso está expandindo em vários sistemas operacionais e navegadores, mas aqueles que usam versões mais antigas ainda não podem usá-las.
  • O ecossistema das chaves de acesso ainda está maduro: o ecossistema das chaves de acesso está evoluindo. Os detalhes da UX e a compatibilidade técnica entre diferentes ambientes podem melhorar.
  • Talvez os usuários ainda não estejam prontos para usar uma chave de acesso: há pessoas que hesitam em adotar novas opções. À medida que o ecossistema das chaves de acesso for desenvolvido, eles terão uma ideia de como elas funcionam e por que são úteis.

Revisar seu mecanismo de autenticação atual

Embora as chaves de acesso tornem a autenticação mais simples e segura, manter os mecanismos antigos é como deixar uma brecha. Recomendamos revisar e melhorar seus mecanismos de autenticação atuais.

Senhas

Criar senhas fortes e gerenciá-las para cada site são tarefas desafiadoras para os usuários. É altamente recomendável usar um gerenciador de senhas integrado ao sistema ou um gerenciador autônomo. 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 você pode fazer essas mudanças:

Autenticação de dois fatores

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

Se você selecionar o SMS como forma de fornecer uma OTP, confira as práticas recomendadas a seguir para simplificar a experiência do usuário ao inserir a 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 podem permitir que os usuários façam login usando a identidade de um provedor de identidade de terceiros. Por exemplo, o recurso Fazer login com o Google gera ótimas conversões para os desenvolvedores, e os usuários acham mais fácil e preferível a autenticação baseada em senha. A federação de identidade é complementar às chaves de acesso. Essa opção é ótima para se inscrever, já que o site ou app pode receber informações básicas do 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 cookies de terceiros em 2024, alguns sistemas de federação de identidade poderão ser afetados, dependendo de como eles forem criados. Para atenuar o impacto, uma nova API de navegador chamada API Federated Credential Management (FedCM) está sendo desenvolvida. Se você executa um provedor de identidade, confira os detalhes e veja se precisa adotar o FedCM.

O login por link mágico é um método de autenticação em que um serviço entrega um link de login por e-mail para que o usuário possa clicar nele para se autenticar. Isso ajuda os usuários a fazer login sem se lembrar de uma senha, mas alternar entre o navegador/app e o cliente de e-mail será uma tarefa difícil. 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 recursos abaixo:

Android

Para integrar chaves de acesso ao seu app Android, use a biblioteca do Gerenciador de credenciais. Para saber mais, confira os seguintes recursos:

UX

Conheça as recomendações de experiência do usuário sobre chaves de acesso: