
🔐 Aprenda autenticação construindo-a corretamente. Uma implementação de referência extensível e em conformidade com os padrões para Cloudflare Workers com Hono, Turso, PBKDF2 e sessões de token duplo JWT.
Aprenda autenticação construindo-a corretamente.
Demonstração ao Vivo · Modelo de Ameaças · Fluxos de Autenticação · ADRs
Nota da demonstração: O endpoint de login é protegido por desafios adaptativos de prova-de-trabalho (PoW) — falhas repetidas retornam dificuldade crescente de PoW. A limitação de taxa com suporte a cache está implementada e testada, mas atualmente não está ativada na demonstração ao vivo; altere
createCacheClientemapp.tspara ativá-la.
Uma implementação de referência de autenticação construída do zero para Cloudflare Workers — hash de senha PBKDF2, sessões de token duplo JWT, comparação em tempo constante, expiração deslizante e um plugin de observabilidade removível — tudo integrado com Hono, Turso (com cache opcional Valkey/Redis) e TypeScript estrito.
Cada escolha de design remonta a um padrão: NIST SP 800-63B para credenciais, NIST SP 800-132 para derivação de chaves, OWASP ASVS para verificação e RFC 8725 para boas práticas de JWT.
Lançando um produto? Use o Better Auth — ele cobre OAuth, chaves de acesso, MFA, limitação de taxa e muito mais de fábrica, com um ecossistema ativo de plugins. Este repositório existe para ensinar como a autenticação funciona, não para substituir uma biblioteca de produção.
| Camada | O que faz |
|---|---|
| Armazenamento de senhas | PBKDF2-SHA384 com salts de 128 bits, digest de integridade, rastreamento de versão (password-service.ts) |
| Gerenciamento de sessões | Sessões no lado do servidor com rastreamento de dispositivo, expiração deslizante, limite de no máximo 3 por usuário; sessões com cache opcional via Valkey/Redis (session-service.ts, cached-session-service.ts) |
| Alteração de senha | Reverificação da senha atual, rehash completo do PBKDF2, revogação atômica de todas as sessões (account-service.ts, ADR-004) |
| Padrão de token duplo JWT | Token de acesso de 15 min + token de atualização de 7 dias, vinculado à sessão para revogação (token-service.ts) |
| Middleware de autenticação | Fluxo de atualização automática, fixação explícita de HS256, validação da declaração typ (require-auth.ts) |
| Cookies seguros | HttpOnly, Secure, SameSite=Strict, Path=/ (cookie.ts) |
| Cabeçalhos de segurança | HSTS, CSP, CORP/COEP/COOP, Permissions-Policy, remoção de impressão digital (security.ts) |
| Validação de entrada | Esquemas Zod com política de senha compatível com NIST (apenas comprimento, sem regras de complexidade) |
| Limitação de taxa | Limitação de janela fixa contra ataques de força bruta e preenchimento de credenciais: baseada em IP em rotas públicas de autenticação (ex.: login), baseada em usuário em ações protegidas; sem bloqueios permanentes (alinhado com NIST) (ADR-006) |
| Plugin de observabilidade | Eventos de segurança estruturados, desafios adaptativos de PoW, API /ops autenticada por agente — conecta-se via middleware, removível excluindo um pacote (ADR-008) |
| Ferramentas de CLI | TUI em Go (plctl) para consultar eventos, gerenciar sessões e provisionar credenciais de agente via superfície /ops (tools/cli/) |
| Testes de vetor de ataque | Adulteração de JWT, confusão de algoritmo, confusão de tipo, casos extremos de unicode, verificações de vazamento de informações |
Este projeto intencionalmente omite funcionalidades que estão fora de seu escopo educacional. Se você está estendendo este código para produção (ou avaliando o que um sistema de autenticação de produção exige), as tabelas abaixo organizam as lacunas por prioridade.
Para a maioria dos projetos reais, use o Better Auth em vez de construir isso você mesmo.
| Funcionalidade | Por que é importante | Padrão / Referência |
|---|---|---|
| Verificação de senhas vazadas | Impede o uso de senhas conhecidas em vazamentos públicos | NIST SP 800-63B §5.1.1.2, API HIBP |