Document admin login endpoint
This commit is contained in:
@@ -25,3 +25,5 @@
|
|||||||
- [019 - Bootstrap-Admin und erste Seed-Daten](019-bootstrap-admin-und-erste-seed-daten.md)
|
- [019 - Bootstrap-Admin und erste Seed-Daten](019-bootstrap-admin-und-erste-seed-daten.md)
|
||||||
|
|
||||||
- [020 - Bootstrap-Seed-Script und Admin-Passwort](020-bootstrap-seed-script-und-admin-passwort.md)
|
- [020 - Bootstrap-Seed-Script und Admin-Passwort](020-bootstrap-seed-script-und-admin-passwort.md)
|
||||||
|
|
||||||
|
- [021 - Auth-Grundlage und Admin-Login](021-auth-grundlage-admin-login.md)
|
||||||
|
|||||||
@@ -0,0 +1,129 @@
|
|||||||
|
# 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
|
||||||
Reference in New Issue
Block a user