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. A RP precisa operar um cliente (um site ou app que crie chaves de acesso ou se autentica com elas) e um servidor para registrar, armazenar e verificar as credenciais geradas por elas no cliente. Um app para dispositivos móveis de chave de acesso precisa ser 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 no dispositivo 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, alguns componentes precisam ser 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, 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 um registro duplicado.
  • Tipos de chave de acesso: se é usado o próprio dispositivo ("autenticador de plataforma") como autenticador ou uma chave de segurança removível ("autenticador entre plataformas / de roaming"). Além disso, os autores das chamadas podem especificar se a credencial será detectada para que o usuário possa 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 ao servidor e armazene o ID da credencial e a chave pública para autenticação futura.

Fluxo de registro

Aprenda a 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 de repetição.

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

Fluxo de autenticação

Aprenda a 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, 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.

Saiba mais em nossos guias do lado do servidor:

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 vai acontecer em um dia. Sabemos que você provavelmente eliminaria o método de autenticação mais fraco o quanto antes, mas isso pode confundir os usuários ou deixar alguns para trás. Recomendamos manter o método de autenticação atual por enquanto.

Existem alguns motivos para isso:

  • Há usuários em um ambiente incompatível com chaves de acesso: o suporte a chaves de acesso está se expandindo amplamente 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 não amadureceu: 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 ter uma chave de acesso: há pessoas que ficam hesitantes em adotar novas coisas. À medida que o ecossistema das chaves de acesso amadurecer, eles vão ter uma noção de como elas funcionam e por que são úteis para elas.

Revise seu mecanismo de autenticação atual

Embora as chaves de acesso simplifiquem e simplifiquem a autenticação, manter os mecanismos antigos é como deixar uma brecha. Recomendamos revisitar e melhorar seus mecanismos de autenticação existentes.

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 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. Saiba 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 usam. Solicitar outra credencial chamada de senha única (OTP) é uma prática comum para proteger esses usuários. As OTPs geralmente 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 e válido apenas por um período limitado, ela 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 entregar uma OTP, confira as práticas recomendadas abaixo para simplificar a experiência do usuário na inserção da 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 do usuário de um provedor de identidade de terceiros. Por exemplo, o Fazer login com o Google oferece ótimas conversões para os desenvolvedores, e os usuários consideram isso mais fácil e preferível à autenticação baseada em senha. A federação de identidade é complementar às chaves de acesso. É ótima 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 cookies de terceiros em 2024, alguns sistemas de federação de identidade poderão ser afetados, dependendo de como eles são criados. Para atenuar o impacto, uma nova API do navegador chamada API Federated Credential Management (FedCM) está sendo desenvolvida. Se você executar um provedor de identidade, confira os detalhes e veja se precisa adotar a FedCM.

O login por link mágico é um método de autenticação em que um serviço fornece um link de login por e-mail para que o usuário possa clicar nele para se autenticar. Embora isso ajude os usuários a fazer login sem se lembrar de uma senha, alternar entre o navegador/app e o cliente de e-mail será um atrito. 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 do usuário 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 a seguir:

Android

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

UX

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