
🔐 Impara l'autenticazione costruendola correttamente. Un'implementazione di riferimento estensibile e conforme agli standard per Cloudflare Workers con Hono, Turso, PBKDF2 e sessioni a doppio token JWT.
Impara l'autenticazione costruendola correttamente.
Demo Live · Modello delle Minacce · Flussi di Autenticazione · ADR
Nota sulla demo: L'endpoint di login è protetto da sfide PoW adattive — tentativi falliti ripetuti aumentano la difficoltà della proof-of-work. Il rate limiting basato su cache è implementato e testato ma attualmente non attivo sulla demo live; attiva
createCacheClientinapp.tsper abilitarlo.
Un'implementazione di autenticazione di riferimento realizzata da zero per Cloudflare Workers — hashing delle password con PBKDF2, sessioni dual-token JWT, confronto a tempo costante, scadenza scorrevole e un plugin di osservabilità rimovibile — tutto collegato con Hono, Turso (con caching opzionale su Valkey/Redis) e TypeScript rigoroso.
Ogni scelta progettuale si basa su uno standard: NIST SP 800-63B per le credenziali, NIST SP 800-132 per la derivazione delle chiavi, OWASP ASVS per la verifica e RFC 8725 per le buone pratiche JWT.
Stai sviluppando un prodotto? Usa Better Auth — copre OAuth, passkey, MFA, rate limiting e altro ancora, già pronto all'uso con un ecosistema di plugin attivo. Questo repository esiste per insegnarti come funziona l'autenticazione, non per sostituire una libreria di produzione.
| Livello | Cosa fa |
|---|---|
| Archiviazione password | PBKDF2-SHA384 con salt a 128 bit, digest di integrità, tracciamento versione (password-service.ts) |
| Gestione sessioni | Sessioni lato server con tracciamento dispositivo, scadenza scorrevole, enforcement massimo 3 per utente; sessioni opzionali con cache Valkey/Redis (session-service.ts, cached-session-service.ts) |
| Cambio password | Riverifica della password corrente, rehash completo PBKDF2, revoca atomica di tutte le sessioni (account-service.ts, ADR-004) |
| Pattern dual-token JWT | Token di accesso da 15 min + token di refresh da 7 giorni, collegati alla sessione per la revoca (token-service.ts) |
| Middleware autenticazione | Flusso di refresh automatico, pinning esplicito HS256, validazione claim typ (require-auth.ts) |
| Cookie sicuri | HttpOnly, Secure, SameSite=Strict, Path=/ (cookie.ts) |
| Intestazioni di sicurezza | HSTS, CSP, CORP/COEP/COOP, Permissions-Policy, rimozione impronta digitale (security.ts) |
| Validazione input | Schemi Zod con criterio password conforme a NIST (solo lunghezza, nessuna regola di complessità) |
| Rate limiting | Throttling a finestra fissa contro attacchi brute-force e credential stuffing: IP-chiave sulle route pubbliche di autenticazione (es. login), utente-chiave sulle azioni protette; nessun blocco definitivo (allineato a NIST) (ADR-006) |
| Plugin osservabilità | Eventi di sicurezza strutturati, sfide PoW adattive, API /ops autenticata tramite agente — si inserisce tramite middleware, rimovibile eliminando un pacchetto (ADR-008) |
| Strumenti CLI | Interfaccia TUI in Go (plctl) per interrogare eventi, gestire sessioni e fornire credenziali agente tramite la superficie /ops (tools/cli/) |
| Test vettori d'attacco | Manomissione JWT, confusione algoritmo, confusione tipo, casi limite Unicode, controlli di divulgazione informazioni |
Questo progetto omette intenzionalmente funzionalità al di fuori del suo scopo didattico. Se stai estendendo questo codice verso la produzione (o valutando cosa richiede un sistema di autenticazione in produzione), le tabelle seguenti organizzano le lacune per priorità.
Per la maggior parte dei progetti reali, usa Better Auth invece di costruire tutto da te.
| Funzionalità | Perché è importante | Standard / Riferimento |
|---|---|---|
| Controllo password violate | Impedisce l'uso di password note in dump pubblici | NIST SP 800-63B §5.1.1.2, API HIBP |