Security-Audit 2026-09-10 ergab: der Bearer-Token-Modus war ohne TLS im
Klartext mitschneidbar und unbegrenzt gültig/firmenweit einlösbar – ein
LAN-Sniffer hätte damit vollen Lese-/Schreibzugriff auf Mitarbeiterliste
und Zeitdaten gehabt (Finding B-1, CRITICAL). Ersetzt durch dasselbe
Ed25519-Request-Signing-Schema wie bei den Browser-PC-Terminals.
- Neuer KioskCryptoService: erzeugt/lädt Ed25519-Schlüsselpaar (Seed in
Secure Storage, privater Schlüssel verlässt nie das Gerät), exportiert
Public Key im OpenSSH-Format, signiert Requests (Method+Path+Timestamp+
Nonce+Body-SHA256), passend zu backend/app/core/kiosk_security.py.
- ApiClient: Interceptor signiert jetzt jeden Request statt Bearer-Header
zu setzen. Body wird einmalig zu exakten Bytes serialisiert (Hash und
gesendeter Body müssen bitidentisch sein).
- EnrollmentScreen: zeigt den öffentlichen Schlüssel zum Einfügen im Portal
("PC-Terminal (Ed25519)"), Eingabefelder jetzt Server-URL + Geräte-ID
statt Bearer-Token. QR-Scan-Format geändert auf {url, device_id}.
- Alte Bearer-Enrollments sind inkompatibel (anderer Secure-Storage-Key) –
bewusst, erzwingt Re-Enrollment über den sicheren Weg. v0.2.0+13.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Dzdm3EWeNdYFUuXFRJryA1
29 lines
545 B
YAML
29 lines
545 B
YAML
name: timemaster_kiosk
|
||
description: TimeMaster Kiosk – Stempeluhr für Android-Tablets hinter VPN
|
||
publish_to: 'none'
|
||
version: 0.2.0+13
|
||
|
||
environment:
|
||
sdk: '>=3.3.0 <4.0.0'
|
||
|
||
dependencies:
|
||
flutter:
|
||
sdk: flutter
|
||
cupertino_icons: ^1.0.8
|
||
dio: ^5.7.0
|
||
flutter_secure_storage: ^9.2.2
|
||
nfc_manager: ^4.2.1
|
||
wakelock_plus: ^1.2.8
|
||
mobile_scanner: ^6.0.2
|
||
open_filex: ^4.5.0
|
||
path_provider: ^2.1.4
|
||
cryptography: ^2.9.0
|
||
|
||
dev_dependencies:
|
||
flutter_test:
|
||
sdk: flutter
|
||
flutter_lints: ^4.0.0
|
||
|
||
flutter:
|
||
uses-material-design: true
|