Zum Inhalt

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.