130 lines
2.3 KiB
Markdown
130 lines
2.3 KiB
Markdown
# 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": "<lokales Passwort>"
|
|
}
|
|
|
|
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
|