
🔐 Lerne Authentifizierung, indem du es richtig machst. Eine erweiterbare, standardkonforme Referenzimplementierung für Cloudflare Workers mit Hono, Turso, PBKDF2 und JWT-Dual-Token-Sessions.
Lerne Authentifizierung, indem du sie richtig implementierst.
Live Demo · Threat Model · Auth Flows · ADRs
Demo-Hinweis: Der Login-Endpunkt ist durch adaptive PoW-Herausforderungen geschützt – wiederholte Fehlversuche erhöhen den Proof-of-Work-Schwierigkeitsgrad. Cache-gestütztes Rate-Limiting ist implementiert und getestet, aber aktuell in der Live-Demo nicht aktiviert; setze
createCacheClientinapp.tsum es zu aktivieren.
Eine von Grund auf entwickelte Authentifizierungs-Referenzimplementierung für Cloudflare Workers – PBKDF2-Passwort-Hashing, JWT-Dual-Token-Sessions, Konstantzeit-Vergleich, gleitendes Ablaufdatum und ein entfernbarer Observability-Plugin – alles zusammengeschaltet mit Hono, Turso (optional mit Valkey/Redis-Caching) und striktem TypeScript.
Jede Designentscheidung geht auf einen Standard zurück: NIST SP 800-63B für Anmeldedaten, NIST SP 800-132 für Schlüsselableitung, OWASP ASVS für Verifikation und RFC 8725 für JWT-Best Practices.
Du entwickelst ein Produkt? Verwende stattdessen Better Auth – es deckt OAuth, Passkeys, MFA, Rate-Limiting und mehr direkt aus der Box ab, mit einem aktiven Plugin-Ökosystem. Dieses Repository dient dazu, dir zu zeigen, wie Authentifizierung funktioniert, und nicht als Ersatz für eine Produktionsbibliothek.
| Ebene | Was sie tut |
|---|---|
| Passwortspeicher | PBKDF2-SHA384 mit 128-Bit-Salts, Integritäts-Digest, Versionsverfolgung (password-service.ts) |
| Sitzungsverwaltung | Serverseitige Sitzungen mit Gerätetracking, gleitendem Ablauf, maximal 3 pro Benutzer; optionale cache-gestützte Sitzungen via Valkey/Redis (session-service.ts, cached-session-service.ts) |
| Passwortänderung | Aktuelles-Passwort-Neuverifikation, vollständiger PBKDF2-Neu-Hash, atomare Sperrung aller Sitzungen (account-service.ts, ADR-004) |
| JWT-Dual-Token-Ansatz | 15-Minuten-Access + 7-Tage-Refresh-Tokens, sitzungsgebunden für Sperrung (token-service.ts) |
| Auth-Middleware | Automatischer Refresh-Ablauf, explizites HS256-Pinning, typ-Anspruchsvalidierung (require-auth.ts) |
| Sichere Cookies | HttpOnly, Secure, SameSite=Strict, Path=/ (cookie.ts) |
| Sicherheitsheader | HSTS, CSP, CORP/COEP/COOP, Permissions-Policy, Fingerabdruck-Entfernung (security.ts) |
| Eingabevalidierung | Zod-Schemas mit NIST-konformer Passwortrichtlinie (nur Länge, keine Komplexitätsregeln) |
| Rate-Limiting | Fixed-Window-Drosselung gegen Brute-Force- und Credential-Stuffing-Angriffe: IP-basiert auf öffentlichen Auth-Routen (z. B. Login), benutzerbasiert auf geschützten Aktionen; keine harten Sperren (NIST-konform) (ADR-006) |
| Observability-Plugin | Strukturierte Sicherheitsereignisse, adaptive PoW-Herausforderungen, agentenauthentifizierte /ops-API – wird per Middleware eingesteckt, entfernt durch Löschen eines Pakets (ADR-008) |
| CLI-Tools | Go TUI (plctl) zum Abfragen von Ereignissen, Verwalten von Sitzungen und Bereitstellen von Agent-Anmeldedaten über die /ops-Oberfläche (tools/cli/) |
| Angriffsvektor-Tests | JWT-Manipulation, Algorithmus-Verwirrung, Typenverwirrung, Unicode-Randfälle, Informationsoffenlegungs-Checks |
Dieses Projekt lässt bewusst Funktionen weg, die außerhalb seines pädagogischen Rahmens liegen. Wenn du diesen Code in Richtung Produktion erweiterst (oder bewertest, was ein Produktions-Auth-System benötigt), ordnen die folgenden Tabellen die Lücken nach Prioritätsstufen.
Für die meisten realen Projekte verwende stattdessen Better Auth, anstatt diese selbst zu bauen.
| Funktion | Warum sie wichtig ist | Standard / Referenz |
|---|---|---|
| Prüfung auf kompromittierte Passwörter | Verhindert die Verwendung von Passwörtern, die bekanntermaßen in öffentlichen Passwort-Dumps vorkommen | NIST SP 800-63B §5.1.1.2, HIBP API |