Kuglers Auth

Sicherheit

Sicherheitsmodell von Kuglers Auth.

Sicherheit

Kuglers Auth ist bewusst einfach und serverseitig aufgebaut. Kritische Zustände liegen in PostgreSQL, nicht im Browser.

Passwörter

Passwörter werden mit Argon2id gehasht. Im Klartext werden Passwörter weder gespeichert noch geloggt.

Das gilt auch für Client Secrets. Ein Client Secret wird nur einmal beim Erstellen angezeigt und danach als Hash gespeichert.

Cookies

Session-Cookies sind:

AttributWert
HttpOnlyJa
SecureJa in Produktion
SameSiteLax
Path/

Die Session selbst liegt serverseitig in der Datenbank. Im Cookie liegt nur ein zufälliges Token.

Rate Limiting

Login-Versuche werden pro IP und E-Mail limitiert.

Standardwerte:

VariableBedeutung
LOGIN_RATE_LIMIT_MAXMaximale Login-Versuche im Fenster.
LOGIN_RATE_LIMIT_WINDOW_SECONDSLänge des Rate-Limit-Fensters.

Redis speichert die kurzlebigen Rate-Limit-Zähler.

CSRF

Login, Logout und Adminaktionen nutzen CSRF-Tokens. Das Token wird als Cookie gesetzt und bei Formularaktionen geprüft.

Authorization Codes

Authorization Codes sind:

  • zufällig generiert
  • gehasht gespeichert
  • 60 Sekunden gültig
  • nur einmal nutzbar
  • an Client und Redirect URI gebunden

Nicht registrierte Redirect URIs werden nicht akzeptiert.

Adminschutz

Das Adminpanel unter /admin ist nur für Benutzer mit Gruppe admin erreichbar.

Andere Gruppen wie os-admin, docs-admin und status-admin werden später von angebundenen Apps genutzt.

Secrets

Secrets gehören ausschließlich in .env.

Nicht in Git gehören:

  • Datenbankpasswörter
  • Admin-Erstpasswort
  • JWT Private Key
  • Client Secrets
  • produktive .env

Sicherheitsprüfung

Wichtige Prüfpunkte:

npm audit --omit=dev
npm run lint
npm run build
docker compose ps
curl -fsS https://auth.kuglers.at/api/health

Zuletzt aktualisiert: 2. Juni 2026