Autenticação
Segurança
OAuth
JWT
Mobile
Login

Autenticação em Aplicativos: Guia Completo de Segurança e UX

Autenticação em Aplicativos: Guia Completo de Segurança e UX

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

  1. Usuário fornece credenciais.
  2. Servidor valida e gera token.
  3. Token é armazenado no dispositivo.
  4. Requisições incluem token no header.
  5. 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

Autenticação em Aplicativos: Guia Completo de Segurança e UX | Matheus Breguêz