Sitzungstoken
Passwork verwendet ein tokenbasiertes Authentifizierungsmodell mit einem Zugriffstoken/Aktualisierungstoken-Paar.
Übersicht über das Token-System
| Token | Zweck | Lebenszeit |
|---|---|---|
| Zugriffstoken | API Authentifizierung anfordern | ~2,8 Stunden |
| Aktualisierungstoken | Erneuerung des Zugriffstokens | 36 Stunden |
Warum nicht JWT?
Passwork-Tokens sind zufällige Zeichenfolgen, nicht JWT. Für einen Passwort-Manager bietet dieser Ansatz eine höhere Sicherheit:
| Charakteristisch | Passwork-Token | JWT |
|---|---|---|
| Formatieren | Zufälliger Base64-String | JSON mit Signatur |
| Informationen im Token | Keine | Nutzlast mit Daten |
| Validierung | Datenbanksuche | Signaturüberprüfung |
| Token-Widerruf | Sofort (DB-Löschung) | Erfordert Blacklist |
Sicherheitsvorteile:
-
Sofortiger Sitzungswiderruf. Bei Verdacht auf eine Gefährdung 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 und ermöglichen die Verfolgung von Geräten, IP-Adressen und der letzten Aktivitätszeit. Der Administrator sieht das vollständige Bild und kann den Zugriff verwalten.
-
Keine sensiblen Daten im Token. JWT enthält Nutzlast mit Benutzerinformationen, die gelesen werden können (Base64 ist keine Verschlüsselung). Passwork-Tokens sind einfach zufällige Identifikatoren ohne jegliche Informationen.
-
Widerstand bei Schlüsselkompromittierung. Wenn der geheime Schlüssel JWT durchsickert, kann der Angreifer gültige Token für jeden Benutzer erstellen. Bei Sitzungstokens gibt es diesen Angriffsvektor nicht.
-
Kein geheimer Signaturschlüssel. JWT erfordert die Speicherung des privaten Schlüssels auf dem Server für die Tokensignierung – ein weiteres Geheimnis zum Schutz, Rotieren und Kontrollieren. Passwork-Sitzungstoken sind nur zufällige Zeichenfolgen, für die Generierung sind keine geheimen Schlüssel erforderlich.
Zugriffstoken
Eigenschaften
| Parameter | Wert |
|---|---|
| Länge | 256 Bit |
| Formatieren | Base64 |
| Stringlänge | ~44 Zeichen |
| Entropie | 256 Bit |
| Standardlebensdauer | 10.000 Sekunden (~2,8 Stunden) |
Generation
Der Zugriffstoken wird mit einem kryptografisch sicheren Zufallszahlengenerator generiert:
token = base64(random_bytes(32))
Validierung
Bei jeder Anfrage: Server:
- Extrahiert Token (aus Cookie oder Header, je nach Modus)
- Sucht nach Token in der Datenbank
- Überprüft die Lebensdauer
- Verknüpft die Anfrage mit dem Benutzer
Token-Übertragungsmodi
Passwork verwendet je nach Clienttyp zwei Zugriffstoken-Übertragungsmodi:
Browsermodus (Webanwendung)
Für Webanwendungen wird das Zugriffstoken über HttpOnly Cookie übertragen:
| Parameter | Wert |
|---|---|
| HttpOnly | Ja – für JavaScript nicht zugänglich (XSS-Schutz) |
| Sicher | Ja – nur HTTPS |
| SameSite | Streng – CSRF-Schutz |
In diesem Modus fügt der Browser jeder Anfrage automatisch ein Cookie hinzu. Das Zugriffstoken wird im Antworttext während der Authentifizierung nicht zurückgegeben – nur im Set-Cookie-Header.
API Modus (Desktop, Erweiterung, Mobil)
Für API-Clients wird das Zugriffstoken im Authorization-Header übertragen:
Authorization: Bearer {access_token}
In diesem Modus wird das Zugriffstoken im Antworttext während der Authentifizierung zurückgegeben und der Client verwaltet den Speicher unabhängig.
Modusvergleich
| Parameter | Browsermodus | API Modus |
|---|---|---|
| Kunden | Webanwendung | Desktop, Erweiterung, Mobil |
| Token-Übertragung | HttpOnly-Cookie | Autorisierungsheader |
| XSS-Schutz | ✓ (Nur Http) | Hängt vom Kunden ab |
| Token-Verwaltung | Browser (automatisch) | Client (manuell) |
Token aktualisieren
Eigenschaften
| Parameter | Wert |
|---|---|
| Länge | 256 Bit |
| Formatieren | Base64 |
| Stringlänge | ~44 Zeichen |
| Entropie | 256 Bit |
| Standardlebensdauer | 129.600 Sekunden (36 Stunden) |
Zweck
Das Aktualisierungstoken wird verwendet, um ein neues Zugriffstoken ohne erneute Authentifizierung zu erhalten. Weitere Informationen zum Erneuerungsprozess finden Sie im Abschnitt Token-Rotation.
Lebenslange Konfiguration
Nach Benutzerrollen
Die Token-Lebensdauer wird auf Benutzerrollenebene konfiguriert:
| Einstellung | Standardwert |
|---|---|
| Lebensdauer des Zugriffstokens | 10.000 Sek. (~2,8 Stunden) |
| Lebensdauer des Tokens aktualisieren | 129.600 Sek. (36 Stunden) |
Konfigurationsbeispiele
| Szenario | Zugriff auf TTL | TTL aktualisieren |
|---|---|---|
| Standardbenutzer | 10.000 Sek. | 129.600 Sek. |
| Hohe Sicherheit | 1.800 Sek. (30 Min.) | 14.400 Sek. (4 Stunden) |
| Bequemlichkeit | 28.800 Sek. (8 Stunden) | 604.800 Sek. (7 Tage) |
Sitzungslebenszyklus
Vollständiger Lebenszyklus
T=0: Authentifizierung. Der Benutzer gibt Anmeldeinformationen ein. Der Server erstellt Zugriffstoken (TTL: 2,8 Stunden) und Aktualisierungstoken (TTL: 36 Stunden).
T=2,8h: Zugriffstoken abgelaufen. Client sendet Aktualisierungstoken. Der Server stellt neue Token aus. Das alte Aktualisierungstoken ist ungültig.
T=36h: Aktualisierungstoken abgelaufen. Erneute Authentifizierung erforderlich. Der Benutzer gibt seine Anmeldeinformationen erneut ein.
Alternatives Szenario – Abmelden. Der Benutzer klickt auf „Abmelden“. Beide Token sind ungültig. Sitzung beendet.
Token-Ungültigmachung
Alle Sitzungstoken werden ungültig gemacht bei:
- Benutzerabmeldung
- Änderung des Master-Passworts
- Zurücksetzen des Administrator-Master-Passworts
Token-Rotation
Standardmodus (Anwendungen)
Für Webanwendungen, Browsererweiterungen, Mobil- und Desktop-Apps gelten strikte Token-Rotationsrichtlinien.
Beim Aktualisieren der Sitzung sendet der Client gleichzeitig Zugriffstoken und Aktualisierungstoken und erhält als Antwort neues Tokenpaar. Dies sorgt für eine kontinuierliche Rotation beider Token und verhindert so die Wiederverwendung gestohlener Token.
Automatisierungsmodus (API)
Für DevOps-Aufgaben und Automatisierung ist eine strikte Rotation oft unpraktisch. Daher ist für Sitzungen, die über die API-Token-Generierung erstellt wurden, ein alternativer Modus verfügbar:
accessTokenwird nur aktualisiert, ohne dassrefreshTokengeändert wird- Separate
refreshToken-Erneuerung bei Bedarf
Dies ermöglicht die Verwendung langlebiger refreshToken in Skripten und CI/CD-Pipelines. HTTP-Rotationsendpunkte werden in der Dokumentation zu API-Tokens beschrieben.
Token-Sicherheit
Abhörschutz
| Bedrohung | Schutz |
|---|---|
| Netzwerküberwachung | HTTPS/TLS erforderlich |
| XSS-Angriff | Nur Http-Cookies (Browsermodus) |
| CSRF | CSRF-Token + SameSite-Cookies |
CSRF-Token
Zweck
CSRF-Token schützt vor Cross-Site-Request-Forgery-Angriffen. Für alle Änderungsvorgänge erforderlich.
Eigenschaften
| Parameter | Wert |
|---|---|
| Größe | 256 Bit |
| Formatieren | Hexadezimal (64 Zeichen) |
| Entropie | 256 Bit |
| Generator | Kryptografisch sicher |
Verwendung
CSRF-Token wird im Header jeder Anfrage übertragen:
X-CSRF-Token: {csrf_token}
Anforderungen nach Kundentyp
| Kundentyp | CSRF-Token |
|---|---|
| Webanwendung (Browsermodus) | ✓ Erforderlich (automatisch generiert und validiert) |
| Browser-Erweiterung | Optional (auf Kundenwunsch) |
| Mobile Anwendung | Optional (auf Kundenwunsch) |
| API | — (nicht verwendet) |
Cookie-Zeichen
Zweck
Optionale zusätzliche Schutzfunktion für den Browsermodus. Bindet die Sitzung an den Clientkontext und schützt so vor Cookie-Diebstahl und Sitzungs-Hijacking.
Wie es funktioniert
Wenn diese Option aktiviert ist, berechnet der Server die Signatur basierend auf:
- Client-Adresse IP
- Browser-Benutzeragent – Sitzungskennung
- Geheimer 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
| Angriff | Schutz |
|---|---|
| Sitzungs-Hijacking | Gestohlenes Cookie funktioniert nicht von verschiedenen IP |
| Cookie-Diebstahl | Cookie nutzlos ohne Übereinstimmung mit IP + User-Agent |
Einschränkungen
- IP-Änderung (VPN, Mobilfunknetz) erfordert eine erneute Authentifizierung
- Browser-Update kann User-Agent ändern
Aktivieren
Die Funktion wird vom Administrator in den Systemeinstellungen aktiviert. Standardmäßig deaktiviert für Kompatibilität mit Benutzern mit dynamischem IP.
Kundentypen
Passwork unterscheidet vier Client-Typen mit unterschiedlichen Sicherheitsmechanismen:
| Funktion | Web | Browser-Erweiterung | Mobil | API |
|---|---|---|---|---|
| Token-Übertragungsmodus | Browsermodus | API Modus | API Modus | API Modus |
| Zugriffstoken | Keks | Kopfzeile | Kopfzeile | Kopfzeile |
| CSRF-Token | ✓ Erforderlich | Optional | Optional | — |
| Cookie-Zeichen | Optional | — | — | — |
| PIN-Code | — | ✓ Unterstützt | — | — |
Browsererweiterung – nur Clienttyp, der serverseitigen PIN-Code unterstützt. Die PIN wird auf dem Server überprüft, wodurch ein temporäres Fenster zur Verwendung durch API geöffnet wird. Nach Ablauf der Zeit ist die Sitzung bis zur erneuten PIN-Eingabe gesperrt. Bei mehreren falschen Versuchen beendet der Server die Sitzung sofort. Dies schützt vor Token-Diebstahl – selbst bei einer Token-Kompromittierung kann der Angreifer API nicht verwenden, ohne die PIN zu kennen.
HTTP Header
Authentifizierungsheader
| Kopfzeile | Beschreibung | Modus |
|---|---|---|
Authorization | Zugriffstoken (Bearer {token}) | API Modus |
Cookie | Zugriffstoken (automatisch) | Browsermodus |
X-CSRF-Token | CSRF-Schutz | Alle Modi |
X-Master-Key-Hash | Hauptschlüssel-Hash | Bei Bedarf |
Clientseitiger Token-Speicher
Jeder Clienttyp implementiert eine sichere Tokenspeicherung entsprechend den Plattformfunktionen:
- Webanwendung – Zugriffstoken, gespeichert im HttpOnly-Cookie, unzugänglich für JavaScript (XSS-Schutz)
- Desktop- und mobile Apps – Token, die im sicheren Speicher des Betriebssystems mit eingeschränktem Zugriff gespeichert werden
- Browser-Erweiterung – isolierter Browser-Speicher verwendet, auf den von Webseiten aus nicht zugegriffen werden kann
Mehrere Sitzungen
Parallele Sitzungen
Passwork unterstützt mehrere gleichzeitige Sitzungen:
- Der Benutzer kann auf mehreren Geräten authentifiziert werden
- Jedes Gerät verfügt über ein eigenes Token-Paar
- Das Abmelden auf einem Gerät hat keine Auswirkungen auf andere
Sitzungsverwaltung
Der Benutzer kann:
- Liste der aktiven Sitzungen anzeigen
- Bestimmte Sitzung beenden
- Alle Sitzungen beenden (außer der aktuellen)
Der Administrator kann:
- Erzwingen Sie die Beendigung aller Benutzersitzungen
Konfigurationsempfehlungen
Hohe Sicherheit
| Parameter | Wert |
|---|---|
| Zugriffstoken | 30 Minuten |
| Aktualisierungstoken | 4 Stunden |
- Häufige erneute Authentifizierung
- Kurzes Angriffsfenster
- Geeignet für kritische Systeme
Sicherheits- und Komfortbalance (Standard)
| Parameter | Wert |
|---|---|
| Zugriffstoken | ~2,8 Stunden |
| Aktualisierungstoken | 36 Stunden |
- Werktags ohne erneute Authentifizierung
- Token für ca. 1,5 Werktage aktualisieren
- Geeignet für die meisten Organisationen
Maximaler Komfort
| Parameter | Wert |
|---|---|
| Zugriffstoken | 8 Stunden |
| Aktualisierungstoken | 7 Tage |
- Authentifizierung einmal pro Woche
- Geeignet für Szenarien mit geringem Risiko – Nicht empfohlen für kritische Daten