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.
Saiba como criar e registrar uma chave de acesso em detalhes:
- Na Web: crie uma chave de acesso para logins sem senha.
- No Android: como trazer a autenticação integrada para seus apps com chaves de acesso usando a API Credential Manager
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.
Saiba em detalhes como autenticar com uma chave de acesso:
- Na Web: faça login com uma chave de acesso pelo preenchimento automático do formulário.
- No Android: como trazer a autenticação integrada para seus apps com chaves de acesso usando a API Credential Manager
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:
- Práticas recomendadas para formulários de login (Web)
- Práticas recomendadas do formulário de inscrição (Web)
- Fazer o login do usuário com o Gerenciador de credenciais (Android)
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.
- Práticas recomendadas para formulário de OTP por SMS (Web)
- Verificação automática de SMS com a API SMS Retriever (Android)
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.
- API Federated Credential Management (Web, FedCM)
- Visão geral do recurso Fazer login com o Google para a Web (Web, Fazer login com o Google)
- Visão geral do login com um toque no Android (Android, login com um toque)
"Links mágicos"
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:
- Criar uma chave de acesso para logins sem senha: um artigo que discute como permitir que os usuários criem chaves de acesso para um site.
- Login com uma chave de acesso usando o preenchimento automático de formulários: um artigo que discute como um login sem senha com chaves de acesso precisa ser projetado ao mesmo tempo que acomoda usuários de senhas já existentes.
- Implementar chaves de acesso com o preenchimento automático de formulários em um app da Web: um codelab que permite aprender a implementar chaves de acesso com o preenchimento automático de formulários em um app da Web para criar um login mais simples e seguro.
- Aprenda a implementar chaves de acesso com o preenchimento automático de formulários em um app da Web: um vídeo do workshop Implementar chaves de acesso com o preenchimento automático de formulários em um app da Web para implementar chaves de acesso com o preenchimento automático de formulários em um app da Web para criar um login mais simples e seguro.
- Criar seu primeiro app WebAuthn: um codelab que permite aprender a criar uma funcionalidade simples de reautenticação com uma chave de acesso no seu site.
Android
Para integrar chaves de acesso ao seu app Android, use a biblioteca do Gerenciador de credenciais. Para saber mais, confira os seguintes recursos:
- Fazer login do usuário com o Gerenciador de credenciais: um artigo que discute como integrar o Gerenciador de credenciais no Android. O Gerenciador de credenciais é uma API do Jetpack que oferece suporte a vários métodos de login, como nome de usuário e senha, chaves de acesso e soluções de login federadas (como o recurso Fazer login com o Google) em uma única API.
- Como trazer a autenticação integrada aos apps com chaves de acesso usando a API Credential Manager (link em inglês): um artigo que discute como integrar chaves de acesso usando o Gerenciador de credenciais no Android.
- Aprenda a simplificar as jornadas de autenticação usando a API Credential Manager no seu app Android: aprenda a implementar a API Credential Manager para oferecer autenticação integrada e segura no app usando chaves de acesso ou senha.
- App de exemplo do Gerenciador de credenciais: um exemplo de código que executa o Gerenciador de credenciais adaptando chaves de acesso.
- Integrar o Gerenciador de credenciais à sua solução de provedor de credenciais | Desenvolvedores Android
UX
Conheça as recomendações de experiência do usuário sobre chaves de acesso: