Kuglers Auth

Architektur

Technischer Aufbau von Kuglers Auth mit Next.js, PostgreSQL, Redis, Prisma und Caddy.

Architektur

Kuglers Auth ist als eigenständige Next.js-Anwendung aufgebaut. Die App läuft in Docker, nutzt PostgreSQL als persistente Datenbank und Redis für kurzlebige Rate-Limit-Daten.

Komponenten

KomponenteRolle
Next.jsWeboberfläche, API-Routen und Server Actions.
TypeScriptTypisierte Anwendungsschicht.
PrismaDatenmodell, Migrationen und Datenbankzugriff.
PostgreSQLPersistente Speicherung von Usern, Gruppen, Sessions, Clients, Codes und Audit Logs.
RedisRate Limiting für Login-Versuche.
Argon2idHashing von Passwörtern und Client Secrets.
joseSignatur und Verifikation optionaler JWTs.
zodEingabevalidierung für Login, Adminaktionen und API-Endpunkte.
CaddyReverse Proxy und HTTPS für auth.kuglers.at.

Laufzeitmodell

Browser
  |
  | HTTPS auth.kuglers.at
  v
Caddy
  |
  | Docker-Netzwerk proxy
  v
kuglers-auth:3000
  |
  +--> postgres:5432
  |
  +--> redis:6379

Die App veröffentlicht keinen eigenen Host-Port. Caddy erreicht den Container über das externe Docker-Netzwerk proxy.

Datenmodell

Die wichtigsten Tabellen sind:

TabelleInhalt
usersBenutzerkonto, E-Mail, Name, Passwort-Hash, Aktivstatus.
groupsZentrale Gruppen.
user_groupsMehrfachzuordnung von Benutzern zu Gruppen.
sessionsServerseitige Sessions mit Token-Hash, Ablaufzeit und Widerrufstatus.
clientsRegistrierte Apps mit Client ID, Secret-Hash, Redirect URIs und erlaubten Gruppen.
authorization_codesKurzlebige, einmalig nutzbare Authorization Codes.
audit_logsSicherheitsrelevante Ereignisse.

Session-Prinzip

Beim Login wird ein zufälliges Session-Token erzeugt. Im Browser liegt nur ein HttpOnly-Cookie. In der Datenbank liegt ausschließlich der Hash des Session-Tokens.

Sessions sind serverseitig widerrufbar. Beim Deaktivieren eines Users werden aktive Sessions dieses Users widerrufen.

Token-Prinzip

JWTs sind optional vorbereitet. Wenn die Schlüssel in der .env gesetzt sind, kann /api/token ein signiertes Token ausgeben. Die öffentliche JWKS liegt unter:

https://auth.kuglers.at/.well-known/jwks.json

Apps können stattdessen auch nur die direkt zurückgegebenen Userdaten nutzen.

Zuletzt aktualisiert: 2. Juni 2026