Token-Refresh ohne erneute Anmeldung
ID: AUTH-003 · Status: 🟢 aktiv
AUTH-001 stellt aktuell nur einen einzelnen Token ohne erkennbare Ablauf- oder Erneuerungslogik aus. Für Clients mit dauerhaftem Zugriffsbedarf (erster Anwendungsfall: die Trading Companion App, siehe APP-001) reicht das nicht: ein Token ohne Ablauf ist ein Sicherheitsrisiko (kein Widerruf möglich, einmal kompromittiert = dauerhaft gültig), ein Token mit Ablauf ohne Refresh-Mechanismus erzwingt ständige Neuanmeldung. AUTH-003 ergänzt ein zweistufiges Modell: kurzlebiger Access-Token + langlebiger, rotierender Refresh-Token.
Typ
functional
Token Modell
Access Token
| Feld | Wert |
|---|---|
| Lebensdauer | 30 Minuten (Vorschlag, anpassbar) |
| Zweck | Wird bei jedem API-Request verwendet (siehe AUTH-002), unverändert |
Refresh Token
| Feld | Wert |
|---|---|
| Lebensdauer | 60 Tage, mit Rotation bei jeder Nutzung (sliding expiration) |
| Zweck | Wird ausschließlich gegen den neuen Refresh-Endpunkt getauscht, nie direkt für API-Requests verwendet |
| Speicherung Hinweis | Sichere, plattformspezifische Speicherung ist Sache des jeweiligen Clients (z.B. Android-Keystore-gestützt bei nativen/hybriden Apps, siehe APP-001), nicht Teil dieses REQs |
Inputs
- refresh token
Outputs
- neues access/refresh token paar
API
Endpoints
Eintrag 1
Methode: POST
Path: /auth/token/refresh
Beschreibung
Tauscht einen gültigen, noch nicht abgelaufenen Refresh-Token gegen ein neues Access-/Refresh-Token-Paar
Body
| Feld | Wert |
|---|---|
| Refresh Token | string |
Antwort
| Feld | Wert |
|---|---|
| Access Token | string |
| Refresh Token | string (neuer, rotierter Token) |
| Expires In | int (Sekunden bis Access-Token-Ablauf) |
Eintrag 2
Methode: POST
Path: /auth/token/revoke
Beschreibung: Widerruft einen Refresh-Token explizit (z.B. bei Logout)
Body
| Feld | Wert |
|---|---|
| Refresh Token | string |
Widerruf Und Fehlerfaelle
| Feld | Wert |
|---|---|
| Abgelaufener Refresh Token | HTTP 401, Client muss regulären Login (AUTH-001) durchlaufen |
| Bereits Verwendeter Refresh Token | HTTP 401 – der bereits rotierte (alte) Refresh-Token wird einfach abgelehnt. Kein Kaskaden-Widerruf weiterer Tokens (bewusst einfach gehalten, da keine hochkritischen Daten über die App zugänglich sind). |
Abnahmekriterien
- [ ] POST /auth/token/refresh liefert bei gültigem Refresh-Token ein neues Access-/Refresh-Token-Paar
- [ ] Der alte Refresh-Token ist nach erfolgreicher Rotation ungültig (Single-Use)
- [ ] Wiederverwendung eines bereits rotierten Refresh-Tokens wird mit HTTP 401 abgelehnt (kein Kaskaden-Widerruf weiterer Tokens)
- [ ] Abgelaufener oder widerrufener Refresh-Token liefert HTTP 401 statt eines neuen Tokens
- [ ] AUTH-002 (Token-Validierung) bleibt unverändert für Access-Tokens gültig
- [ ] POST /auth/token/revoke invalidiert einen Refresh-Token sofort
Depends On
- AUTH-001
- AUTH-002
Changelog
Eintrag 1
Version: 1.0
Changes
Initiale Version – Refresh-Token-Mechanismus, ausgelöst durch den Bedarf der Trading Companion App (APP-001) nach dauerhafter Session ohne wiederholte Anmeldung
Eintrag 2
Version: 1.1
Changes
Kaskaden-Widerruf der Token-Familie bei Wiederverwendung entfernt (bewusste Vereinfachung – keine hochkritischen Daten über die App zugänglich). Wiederverwendung eines rotierten Tokens wird jetzt einfach mit HTTP 401 abgelehnt, ohne weitere Tokens zu invalidieren.