2.3 KiB
021 - Auth-Grundlage und Admin-Login
Ziel
Der Server wurde um eine erste Auth-Grundlage erweitert.
Implementiert wurde ein Login-Endpunkt für den vorhandenen Bootstrap-Admin.
Neuer Endpunkt
POST /api/v1/auth/login
Request:
{ "username": "admin", "password": "" }
Response bei Erfolg:
{ "status": "ok", "tokenType": "Bearer", "accessToken": "...", "refreshToken": "...", "expiresInSeconds": 3600, "user": { "id": "...", "username": "admin", "displayName": "RUVNOX Admin", "role": "admin" } }
Neue Dateien
Security:
- src/main/kotlin/de/ruvnox/tactical/security/PasswordHash.kt
- src/main/kotlin/de/ruvnox/tactical/security/TokenSupport.kt
API:
- src/main/kotlin/de/ruvnox/tactical/api/AuthDtos.kt
- src/main/kotlin/de/ruvnox/tactical/api/AuthRoutes.kt
Repository:
- src/main/kotlin/de/ruvnox/tactical/repository/SessionRepository.kt
Geändert:
- UserRepository.kt
- Main.kt
Passwortprüfung
Der Server kann jetzt PBKDF2-SHA256-Hashes im Format des Bootstrap-Scripts prüfen:
pbkdf2_sha256$iterations$salt_base64$hash_base64
Die Prüfung nutzt PBKDF2WithHmacSHA256 und konstantzeitnahen Vergleich über MessageDigest.isEqual.
Token
Beim Login werden erzeugt:
- accessToken
- refreshToken
Der refreshToken wird nicht im Klartext gespeichert.
In auth_sessions wird gespeichert:
- refresh_token_hash = SHA-256(refreshToken)
- user_id
- expires_at
- created_at
- last_seen_at
Datenbank
Genutzte Tabelle:
auth_sessions
Nach erfolgreichem Login existiert mindestens eine aktive Session.
Sicherheitshinweise
Dies ist eine erste Auth-Grundlage.
Noch nicht final umgesetzt:
- geschützte Endpunkte
- Bearer-Token-Prüfung
- Refresh-Flow
- Logout
- Rollenprüfung auf Routen
- Rate-Limiting
- Brute-Force-Schutz
- Session-Cleanup
Verifikation
Login wurde öffentlich geprüft:
POST https://tactical.ruvnox.de/api/v1/auth/login
Tokens wurden in der Ausgabe maskiert.
Git-Commit
tactical-server:
Add admin login endpoint
Abschlussstand
- Passwort-Hash-Verifikation implementiert
- Login-DTOs implementiert
- Login-Route implementiert
- Session-Erzeugung implementiert
- Build erfolgreich
- Deployment erfolgreich
- Login erfolgreich geprüft
- Server-Repo gepusht
- Docs-Repo aktualisiert