Zum Hauptinhalt springen

Sitzungstoken

Passwork verwendet ein tokenbasiertes Authentifizierungsmodell mit Access Token / Refresh Token-Paar.

Übersicht des Token-Systems

TokenZweckLebensdauer
Access TokenAPI-Anfragenauthentifizierung~2,8 Stunden
Refresh TokenErneuerung des Access Token36 Stunden

Warum kein JWT?

Passwork-Token sind zufällige Zeichenfolgen, kein JWT. Für einen Passwortmanager bietet dieser Ansatz höhere Sicherheit:

EigenschaftPasswork-TokenJWT
FormatZufällige Base64-ZeichenfolgeJSON mit Signatur
Informationen im TokenKeinePayload mit Daten
ValidierungDatenbankabfrageSignaturüberprüfung
Token-WiderrufSofort (DB-Löschung)Erfordert Blacklist

Sicherheitsvorteile:

  • Sofortiger Sitzungswiderruf. Bei Verdacht auf Kompromittierung kann der Administrator oder Benutzer jede Sitzung sofort beenden — das Token wird aus der Datenbank gelöscht und wird sofort ungültig. JWT funktioniert bis zum Ablauf weiter.

  • Vollständige Sitzungskontrolle. Alle aktiven Sitzungen werden auf dem Server gespeichert, was die Verfolgung von Geräten, IP-Adressen und der letzten Aktivitätszeit ermöglicht. Der Administrator hat ein vollständiges Bild und kann den Zugriff verwalten.

  • Keine sensiblen Daten im Token. JWT enthält einen Payload mit Benutzerinformationen, der gelesen werden kann (Base64 ist keine Verschlüsselung). Passwork-Token sind einfach zufällige Identifikatoren ohne jegliche Information.

  • Resistenz gegen Schlüsselkompromittierung. Wenn der geheime JWT-Schlüssel durchsickert, kann ein Angreifer gültige Token für jeden Benutzer erstellen. Bei Sitzungstoken existiert dieser Angriffsvektor nicht.

  • Kein Signierschlüssel. JWT erfordert die Speicherung eines privaten Schlüssels auf dem Server für die Token-Signierung — ein weiteres Geheimnis, das geschützt, rotiert und kontrolliert werden muss. Passwork-Sitzungstoken sind einfach zufällige Zeichenfolgen, für deren Generierung keine geheimen Schlüssel benötigt werden.


Access Token

Eigenschaften

ParameterWert
Länge256 Bit
FormatBase64
Zeichenfolgenlänge~44 Zeichen
Entropie256 Bit
Standardlebensdauer10.000 Sekunden (~2,8 Stunden)

Generierung

Das Access Token wird mit einem kryptografisch sicheren Zufallszahlengenerator generiert:

token = base64(random_bytes(32))

Validierung

Bei jeder Anfrage führt der Server folgende Schritte durch:

  1. Extrahiert das Token (aus Cookie oder Header, je nach Modus)
  2. Sucht das Token in der Datenbank
  3. Überprüft die Lebensdauer
  4. Verknüpft die Anfrage mit dem Benutzer

Token-Übertragungsmodi

Passwork verwendet zwei Access-Token-Übertragungsmodi, abhängig vom Client-Typ:

Browser-Modus (Webanwendung)

Für die Webanwendung wird das Access Token über HttpOnly Cookie übertragen:

ParameterWert
HttpOnlyJa — für JavaScript unzugänglich (XSS-Schutz)
SecureJa — nur HTTPS
SameSiteStrict — CSRF-Schutz

In diesem Modus fügt der Browser automatisch das Cookie an jede Anfrage an. Das Access Token wird bei der Authentifizierung nicht im Antworttext zurückgegeben — nur im Set-Cookie-Header.

API-Modus (Desktop, Erweiterung, Mobil)

Für API-Clients wird das Access Token im Authorization-Header übertragen:

Authorization: Bearer {access_token}

In diesem Modus wird das Access Token bei der Authentifizierung im Antworttext zurückgegeben, und der Client verwaltet die Speicherung selbstständig.

Modusvergleich

ParameterBrowser-ModusAPI-Modus
ClientsWebanwendungDesktop, Erweiterung, Mobil
Token-ÜbertragungHttpOnly CookieAuthorization-Header
XSS-Schutz✓ (HttpOnly)Abhängig vom Client
Token-VerwaltungBrowser (automatisch)Client (manuell)

Refresh Token

Eigenschaften

ParameterWert
Länge256 Bit
FormatBase64
Zeichenfolgenlänge~44 Zeichen
Entropie256 Bit
Standardlebensdauer129.600 Sekunden (36 Stunden)

Zweck

Das Refresh Token wird verwendet, um ein neues Access Token ohne erneute Authentifizierung zu erhalten. Mehr zum Erneuerungsprozess im Abschnitt Token-Rotation.


Lebensdauer-Konfiguration

Nach Benutzerrollen

Die Token-Lebensdauer wird auf Benutzerrollenebene konfiguriert:

EinstellungStandardwert
Access-Token-Lebensdauer10.000 Sek. (~2,8 Stunden)
Refresh-Token-Lebensdauer129.600 Sek. (36 Stunden)

Konfigurationsbeispiele

SzenarioAccess TTLRefresh TTL
Standardbenutzer10.000 Sek.129.600 Sek.
Hohe Sicherheit1.800 Sek. (30 Min.)14.400 Sek. (4 Stunden)
Komfort28.800 Sek. (8 Stunden)604.800 Sek. (7 Tage)

Sitzungslebenszyklus

Vollständiger Lebenszyklus

T=0: Authentifizierung. Benutzer gibt Anmeldedaten ein. Server erstellt Access Token (TTL: 2,8 Stunden) und Refresh Token (TTL: 36 Stunden).

T=2,8h: Access Token abgelaufen. Client sendet Refresh Token. Server stellt neue Token aus. Altes Refresh Token wird ungültig.

T=36h: Refresh Token abgelaufen. Erneute Authentifizierung erforderlich. Benutzer gibt Anmeldedaten erneut ein.

Alternatives Szenario — Abmeldung. Benutzer klickt auf „Abmelden". Beide Token werden ungültig. Sitzung beendet.

Token-Ungültigmachung

Alle Sitzungstoken werden ungültig bei:

  • Benutzerabmeldung
  • Änderung des Masterpassworts
  • Administrator-Reset des Masterpassworts

Token-Rotation

Standardmodus (Anwendungen)

Für Webanwendung, Browsererweiterung, Mobile und Desktop-Apps gilt eine strikte Token-Rotationsrichtlinie.

Bei der Sitzungserneuerung sendet der Client Access Token und Refresh Token gleichzeitig und erhält ein neues Token-Paar als Antwort. Dies ermöglicht eine kontinuierliche Rotation beider Token und verhindert die Wiederverwendung gestohlener Token.

Automatisierungsmodus (API)

Für DevOps-Aufgaben und Automatisierung ist strikte Rotation oft unpraktisch. Daher steht für über API-Token-Generierung erstellte Sitzungen ein alternativer Modus zur Verfügung:

  • Nur Erneuerung des Access Token ohne Änderung des Refresh Token
  • Separate Refresh-Token-Erneuerung bei Bedarf

Dies ermöglicht die Verwendung langlebiger Refresh Token in Skripten und CI/CD-Pipelines.


Token-Sicherheit

Schutz vor Abfangen

BedrohungSchutz
NetzwerkabfangenHTTPS/TLS erforderlich
XSS-AngriffHttpOnly Cookies (Browser-Modus)
CSRFCSRF Token + SameSite Cookies

CSRF Token

Zweck

Das CSRF Token schützt vor Cross-Site-Request-Forgery-Angriffen. Erforderlich für alle ändernden Operationen.

Eigenschaften

ParameterWert
Größe256 Bit
FormatHexadezimal (64 Zeichen)
Entropie256 Bit
GeneratorKryptografisch sicher

Verwendung

Das CSRF Token wird im Header jeder Anfrage übertragen:

X-CSRF-Token: {csrf_token}

Anforderungen nach Client-Typ

Client-TypCSRF Token
Webanwendung (Browser-Modus)✓ Erforderlich (automatisch generiert und validiert)
BrowsererweiterungOptional (auf Client-Anfrage)
Mobile AnwendungOptional (auf Client-Anfrage)
API— (nicht verwendet)

Zweck

Optionale zusätzliche Schutzfunktion für den Browser-Modus. Bindet die Sitzung an den Client-Kontext und schützt vor Cookie-Diebstahl und Session-Hijacking.

Funktionsweise

Bei Aktivierung berechnet der Server eine Signatur basierend auf:

  • Client-IP-Adresse
  • Browser User-Agent
  • Sitzungskennung
  • Geheimem Schlüssel (60 Zeichen, ~357 Bit Entropie)

Die Signatur wird nach folgender Formel berechnet:

cookieSign = HMAC-SHA512(IP + UserAgent + SessionID, secret)

Die Signatur wird in einem separaten HttpOnly Cookie gespeichert und bei jeder Anfrage überprüft.

Angriffsschutz

AngriffSchutz
Session HijackingGestohlenes Cookie funktioniert nicht von einer anderen IP
Cookie-DiebstahlCookie nutzlos ohne übereinstimmende IP + User-Agent

Einschränkungen

  • IP-Wechsel (VPN, mobiles Netzwerk) erfordert erneute Authentifizierung
  • Browser-Update kann den User-Agent ändern

Aktivierung

Die Funktion wird vom Administrator in den Systemeinstellungen aktiviert. Standardmäßig deaktiviert für Kompatibilität mit Benutzern mit dynamischer IP.


Client-Typen

Passwork unterscheidet vier Client-Typen mit unterschiedlichen Sicherheitsmechanismen:

FunktionWebBrowsererweiterungMobilAPI
Token-ÜbertragungsmodusBrowser-ModusAPI-ModusAPI-ModusAPI-Modus
Access TokenCookieHeaderHeaderHeader
CSRF Token✓ ErforderlichOptionalOptional
Cookie SignOptional
PIN-Code✓ Unterstützt

Browsererweiterung — einziger Client-Typ mit Unterstützung für Server-seitige PIN-Code-Prüfung. Der PIN wird auf dem Server überprüft, was ein temporäres Fenster für die API-Nutzung öffnet. Nach Zeitablauf wird die Sitzung gesperrt, bis der PIN erneut eingegeben wird. Bei mehreren falschen Versuchen beendet der Server die Sitzung sofort. Dies schützt vor Token-Diebstahl — selbst bei Token-Kompromittierung kann ein Angreifer die API nicht ohne Kenntnis des PINs verwenden.


HTTP-Header

Authentifizierungs-Header

HeaderBeschreibungModus
AuthorizationAccess Token (Bearer {token})API-Modus
CookieAccess Token (automatisch)Browser-Modus
X-CSRF-TokenCSRF-SchutzAlle Modi
X-Master-Key-HashMasterschlüssel-HashBei Bedarf

Client-seitige Token-Speicherung

Jeder Client-Typ implementiert eine sichere Token-Speicherung entsprechend den Plattformmöglichkeiten:

  • Webanwendung — Access Token wird in HttpOnly Cookie gespeichert, für JavaScript unzugänglich (XSS-Schutz)
  • Desktop- und Mobile Apps — Token werden im sicheren OS-Speicher mit eingeschränktem Zugriff gespeichert
  • Browsererweiterung — isolierter Browser-Speicher wird verwendet, von Webseiten nicht zugänglich

Mehrere Sitzungen

Parallele Sitzungen

Passwork unterstützt mehrere gleichzeitige Sitzungen:

  • Benutzer kann auf mehreren Geräten gleichzeitig authentifiziert sein
  • Jedes Gerät hat sein eigenes Token-Paar
  • Abmeldung auf einem Gerät beeinflusst die anderen nicht

Sitzungsverwaltung

Der Benutzer kann:

  • Liste aktiver Sitzungen anzeigen
  • Bestimmte Sitzung beenden
  • Alle Sitzungen beenden (außer der aktuellen)

Der Administrator kann:

  • Alle Benutzersitzungen erzwungen beenden

Konfigurationsempfehlungen

Hohe Sicherheit

ParameterWert
Access Token30 Minuten
Refresh Token4 Stunden
  • Häufige erneute Authentifizierung
  • Kurzes Angriffsfenster
  • Geeignet für kritische Systeme

Balance zwischen Sicherheit und Komfort (Standard)

ParameterWert
Access Token~2,8 Stunden
Refresh Token36 Stunden
  • Arbeitstag ohne erneute Authentifizierung
  • Refresh Token für ~1,5 Arbeitstage
  • Geeignet für die meisten Organisationen

Maximaler Komfort

ParameterWert
Access Token8 Stunden
Refresh Token7 Tage
  • Authentifizierung einmal pro Woche
  • Geeignet für Szenarien mit niedrigem Risiko
  • Nicht empfohlen für kritische Daten