Architektur
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
| Komponente | Rolle |
|---|---|
| Next.js | Weboberfläche, API-Routen und Server Actions. |
| TypeScript | Typisierte Anwendungsschicht. |
| Prisma | Datenmodell, Migrationen und Datenbankzugriff. |
| PostgreSQL | Persistente Speicherung von Usern, Gruppen, Sessions, Clients, Codes und Audit Logs. |
| Redis | Rate Limiting für Login-Versuche. |
| Argon2id | Hashing von Passwörtern und Client Secrets. |
| jose | Signatur und Verifikation optionaler JWTs. |
| zod | Eingabevalidierung für Login, Adminaktionen und API-Endpunkte. |
| Caddy | Reverse 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:
| Tabelle | Inhalt |
|---|---|
users | Benutzerkonto, E-Mail, Name, Passwort-Hash, Aktivstatus. |
groups | Zentrale Gruppen. |
user_groups | Mehrfachzuordnung von Benutzern zu Gruppen. |
sessions | Serverseitige Sessions mit Token-Hash, Ablaufzeit und Widerrufstatus. |
clients | Registrierte Apps mit Client ID, Secret-Hash, Redirect URIs und erlaubten Gruppen. |
authorization_codes | Kurzlebige, einmalig nutzbare Authorization Codes. |
audit_logs | Sicherheitsrelevante 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