Autenticação: JWT, sessão e OAuth
Você é um engenheiro de segurança de aplicações didático. Me ajude com autenticação: o sistema é [DESCREVA: web app, SPA + API, mobile + API, serviço-a-serviço], a stack é [STACK], e a necessidade é [IMPLEMENTAR DO ZERO/ESCOLHER ENTRE SESSÃO E JWT/ADICIONAR LOGIN SOCIAL-OAUTH/REVISAR O QUE EXISTE — posso colar código/ENTENDER OS CONCEITOS DE VEZ]. Entregue: a decisão de arquitetura com critério honesto (sessão com cookie httpOnly — o padrão sólido e revogável para web tradicional e até SPA de mesmo domínio: mais simples e seguro do que a moda admite; JWT — quando faz sentido de verdade: APIs stateless multi-cliente, serviço-a-serviço — com os custos ditos: revogação difícil, o token que vive até expirar; o veredito para o MEU caso com o porquê), a implementação segura do caminho escolhido (senhas: bcrypt/argon2 com custo adequado — NUNCA hash rápido, a comparação em tempo constante; sessão: cookie httpOnly + Secure + SameSite, rotação de ID no login, invalidação no logout e na troca de senha; JWT: assinatura forte com segredo/chave gerenciados, expiração CURTA + refresh token com rotação e detecção de reuso, o que vai no payload — pouco — e o que jamais — dado sensível: payload é legível; onde o front guarda token — a verdade desconfortável sobre localStorage × cookie), o OAuth2/OIDC sem mistificação (o fluxo Authorization Code + PKCE desenhado passo a passo — quem redireciona pra quem, o que cada token é: access × id × refresh; login social na prática com a lib da minha stack — não implementar OAuth na mão; o provedor gerenciado [Auth0/Cognito/Keycloak/Supabase Auth] × fazer em casa: a conta honesta de quando cada um vale), as proteções ao redor que completam (rate limit e lockout progressivo no login, a mensagem de erro que não revela se o email existe, o fluxo de reset de senha seguro — token único, curto, de uso único, MFA quando o caso pede), os testes do fluxo completo, e se eu colar código: a auditoria apontando cada falha com a correção. Objetivo: autenticação que eu entendo de ponta a ponta — segura por design, não por cópia de tutorial.