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.
Saiba como criar e registrar uma chave de acesso em detalhes:
- Na Web: criar uma chave de acesso para logins sem senha
- No Android: como usar a API Credential Manager para simplificar a autenticação nos seus apps com chaves de acesso
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.
Saiba como autenticar com uma chave de acesso em detalhes:
- Na Web: Fazer login com uma chave de acesso usando o preenchimento automático de formulários
- No Android: como usar a API Credential Manager para simplificar a autenticação nos seus apps com chaves 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 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:
- Introdução à implementação de chaves de acesso do lado do servidor
- Registro de chaves de acesso do lado do servidor
- Autenticação de chaves de acesso 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:
- Práticas recomendadas para formulários de login (Web)
- Práticas recomendadas para formulários 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 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.
- Práticas recomendadas para formulários 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 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.
- API Federated Credential Management (Web, FedCM)
- Visão geral do 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 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:
- Criar uma chave de acesso para logins sem senha: um artigo que explica como permitir que os usuários criem chaves de acesso para um site.
- Fazer 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 deve ser projetado enquanto acomoda os usuários atuais que usam senhas.
- Implementar chaves de acesso com o preenchimento automático de formulários em um app da Web: um codelab que ensina 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.
- Ajude os usuários a gerenciar as chaves de acesso de forma eficaz: para aproveitar todo o potencial das chaves de acesso, é preciso considerar cuidadosamente a experiência do usuário em relação ao gerenciamento delas. Este documento descreve diretrizes e recursos opcionais para projetar um sistema de gerenciamento de chaves de acesso intuitivo, seguro e robusto.
- Chaves de acesso seguras e integradas: uma lista de verificação de implantação: essa lista de verificação vai orientar você pelos principais aspectos da implementação de chaves de acesso para alcançar os melhores resultados de experiência do usuário (UX).
Android
Para integrar chaves de acesso ao seu app Android, use a biblioteca Credential Manager. Para saber mais, consulte 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 para seus apps com chaves de acesso usando a API Credential Manager: um artigo que discute como integrar chaves de acesso pelo Credential Manager no Android.
- Aprenda a simplificar as jornadas de autenticação usando a API Credential Manager no seu app Android: saiba como implementar a API Credential Manager para oferecer autenticação simples e segura no app por chave de acesso ou senha.
- App de exemplo do Gerenciador de credenciais: um exemplo de código que executa o Gerenciador de credenciais com chaves de acesso.
- Integrar o Credential Manager à sua solução de provedor de credenciais | Desenvolvedores Android
UX
Confira as recomendações de experiência do usuário com chaves de acesso: