Autenticação é o processo de verificar a identidade do usuário. Em aplicativos, é a porta de entrada para a experiência. Uma autenticação mal implementada compromete segurança e frustra usuários. Este guia apresenta métodos, protocolos e boas práticas para implementar autenticação segura e amigável.
O Que É Autenticação
Autenticação responde à pergunta: "Quem é você?". É diferente de autorização, que responde: "O que você pode fazer?". O usuário prova sua identidade, geralmente com algo que sabe (senha), algo que tem (telefone) ou algo que é (biometria).
Importância da Autenticação
Sem autenticação adequada, qualquer pessoa acessa dados privados. Vazamentos, fraudes e abusos ficam possíveis. A reputação do produto e a confiança do usuário estão em jogo.
Métodos de Autenticação
Usuário e Senha
Método tradicional. Simples de implementar, mas vulnerável a ataques se senhas forem fracas ou armazenadas incorretamente.
Social Login
Login via Google, Apple, Facebook. Rápido para o usuário, delega segurança para providers confiáveis. Reduz atrito no cadastro.
Magic Link
Link enviado por email que autentica ao clicar. Elimina senha, mas depende de acesso ao email.
OTP (One-Time Password)
Código enviado por SMS ou email. Válido por curto período. Comum como segundo fator.
Biometria
Impressão digital, Face ID. Conveniência máxima em dispositivos que suportam. Armazenamento local, não compartilhado.
Passkeys
Novo padrão que elimina senhas. Usa criptografia de chave pública. Apple, Google e Microsoft suportam.
Protocolos e Padrões
OAuth 2.0
Padrão para autorização delegada. Permite apps acessarem recursos sem receber senha. Base do social login.
OpenID Connect
Camada de identidade sobre OAuth 2.0. Adiciona autenticação ao fluxo de autorização.
SAML
Padrão enterprise para SSO. XML-based. Comum em ambientes corporativos.
JWT (JSON Web Token)
Token que carrega claims assinados. Stateless, verificável pelo servidor sem consultar banco.
Fluxo de Autenticação Típico
- Usuário fornece credenciais.
- Servidor valida e gera token.
- Token é armazenado no dispositivo.
- Requisições incluem token no header.
- Servidor valida token e autoriza acesso.
Tokens: Access e Refresh
Access Token
Token de curta duração para acessar APIs. Expira rapidamente (minutos a horas).
Refresh Token
Token de longa duração para obter novos access tokens. Armazenado com segurança. Permite sessões longas sem reautenticação.
Rotação de Tokens
Refresh token gera novo refresh token a cada uso. Se um for comprometido, é invalidado na próxima rotação.
Armazenamento Seguro
iOS Keychain
API nativa para armazenar dados sensíveis. Criptografado pelo sistema. Use para tokens e credenciais.
Android Keystore
Similar ao Keychain. Armazena chaves criptográficas com proteção de hardware quando disponível.
Encrypted SharedPreferences
Para Android, alternativa mais simples. Criptografa dados em SharedPreferences.
Nunca em Texto Plano
Não armazene tokens em arquivos locais, logs ou código. Atacantes conseguem extrair facilmente.
Multi-Factor Authentication (MFA)
O Que É
Exige múltiplos fatores para autenticar. Algo que sabe + algo que tem, por exemplo.
Por Que Usar
Mesmo que senha seja comprometida, atacante precisa do segundo fator. Aumenta segurança significativamente.
Implementações Comuns
- SMS OTP (menos seguro, vulnerável a SIM swap).
- TOTP via app autenticador (Google Authenticator, Authy).
- Push notification para aprovar login.
- Biometria como segundo fator.
Segurança no Login
Rate Limiting
Limite tentativas de login. Previne brute force.
Account Lockout
Bloqueia conta após múltiplas falhas. Combina com rate limiting.
CAPTCHA
Diferencia humanos de bots. Adiciona atrito, use com moderação.
Detecção de Anomalias
Identifique logins suspeitos: nova localização, novo dispositivo, horário incomum. Exija verificação adicional.
Experiência do Usuário
Minimize Atrito
Quanto mais passos, mais abandono. Social login e biometria reduzem fricção.
Lembre o Usuário
Sessões longas evitam reautenticação frequente. Use refresh tokens.
Feedback Claro
Mensagens de erro específicas (dentro do razoável de segurança). "Email ou senha incorretos" é melhor que "Erro de autenticação".
Recuperação de Conta
Fluxo claro para reset de senha. Email, SMS ou perguntas de segurança.
Social Login: Prós e Contras
Vantagens
- Cadastro rápido, menos campos.
- Usuário não cria mais uma senha.
- Providers cuidam da segurança.
Desvantagens
- Dependência de terceiros.
- Usuário pode ter preocupações de privacidade.
- Se provider cair, login fica indisponível.
Boas Práticas
Ofereça opções: social + tradicional. Permita vincular múltiplos métodos. Não force social login.
Sign in with Apple
Obrigatoriedade
Se o app oferece social login, Apple exige oferecer Sign in with Apple. Regra da App Store.
Hide My Email
Usuário pode ocultar email real. App recebe endereço relay da Apple.
Implementação
Use AuthenticationServices framework. Fluxo similar a OAuth.
Passkeys: O Futuro
Como Funcionam
Par de chaves pública/privada. Chave privada fica no dispositivo, nunca é transmitida. Autenticação por challenge criptográfico.
Vantagens
- Resistentes a phishing.
- Não há senha para vazar.
- Sincronizam entre dispositivos do usuário.
Adoção
Apple, Google e Microsoft suportam. Padrão FIDO2/WebAuthn. Adoção crescente.
Sessão e Logout
Gerenciamento de Sessão
Rastreie sessões ativas. Permita ao usuário ver e revogar.
Logout Seguro
Invalide tokens no servidor. Limpe dados sensíveis do dispositivo.
Timeout de Inatividade
Encerre sessão após período sem uso. Balancie segurança e conveniência.
Erros Comuns
Senhas em Texto Plano
Nunca armazene senhas sem hash. Use bcrypt, scrypt ou Argon2.
Tokens Sem Expiração
Tokens eternos são risco. Sempre defina expiração.
Validação Apenas no Cliente
Toda validação deve acontecer no servidor. Cliente pode ser manipulado.
Mensagens de Erro Reveladoras
"Usuário não existe" vs "Email não cadastrado" revelam informação. Seja genérico.
Conclusão
Autenticação segura equilibra proteção e experiência do usuário. Use protocolos estabelecidos, implemente MFA, armazene tokens corretamente e minimize atrito. Passkeys representam o futuro, mas senhas ainda dominam. Construa para a realidade atual enquanto se prepara para a evolução.
FAQs
1) JWT é seguro? Sim, se implementado corretamente. Use HTTPS, valide assinatura, defina expiração curta.
2) Devo oferecer login por SMS? Como segundo fator, é melhor que nada. Mas autenticador TOTP é mais seguro que SMS.
3) Sign in with Apple é obrigatório? Se você oferece qualquer social login, sim. É regra da App Store.
4) Quanto tempo deve durar um access token? Depende do contexto. 15-60 minutos é comum. Refresh tokens renovam a sessão.
5) Biometria é segura para autenticação? Sim. Dados biométricos ficam no dispositivo, nunca são transmitidos. É conveniência com segurança.
Leia também
- Autenticacao Em Aplicativos - Melhores Praticas Com Checklist
- Login Social em Aplicativos: Implementação e Boas Práticas
- Login social na prática: o roteiro de decisões antes de implementar no seu app
- Segurança em Aplicativos: Guia de Proteção Mobile
- Autenticacao Em Aplicativos - Melhores Praticas Com Exemplos
- Desenvolvimento Nativo Android: Guia Completo com Kotlin
