0f83d13c0c
2A – Backend Ed25519-Verifizierung: - app/core/kiosk_security.py (NEU): verify_kiosk_request() Dependency - Timestamp-Check (30s Drift), Nonce-Cache (Redis/In-Memory), IP-Whitelist - Ed25519-Signatur über METHOD+PATH+TIMESTAMP+NONCE+sha256(BODY) - PEM + OpenSSH Key-Format unterstützt - app/routers/kiosk.py: approve/revoke Endpunkte, POST /heartbeat (Ed25519-signiert) - app/services/kiosk_service.py: token-basierte Methoden entfernt, approve/revoke/heartbeat - app/schemas/kiosk.py: KioskDeviceOut mit heartbeat_status, HeartbeatRequest/Response 2B – CLI-Tool: - cli.py (NEU, 529 Zeilen): Typer-CLI mit kiosk add/list/approve/revoke/info - Public-Key-Fingerprint (SHA256), Rich-Tabellen, CIDR-Validierung - Direkter DB-Zugriff mit RLS-Bypass 2C – Frontend: - KioskDevicesPage.tsx: Zwei-Tab-Layout (Wartet/Aktiv), Status-Ampel, Auto-Refresh 30s, Ed25519-Workflow (kein Token mehr) - Layout.tsx: KioskHealthBadge (online/total, 30s Refresh, nur COMPANY_ADMIN) requirements.txt: typer>=0.12.0, rich>=13.7.0 Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
514 B
Plaintext
29 lines
514 B
Plaintext
fastapi>=0.110.0
|
|
uvicorn[standard]>=0.27.0
|
|
sqlalchemy[asyncio]>=2.0.0
|
|
asyncpg>=0.29.0
|
|
alembic>=1.13.0
|
|
pydantic[email]>=2.6.0
|
|
pydantic-settings>=2.2.0
|
|
python-jose[cryptography]>=3.3.0
|
|
bcrypt>=4.0.0
|
|
openpyxl>=3.1.0
|
|
ldap3>=2.9.0
|
|
cryptography>=42.0.0
|
|
python-multipart>=0.0.9
|
|
slowapi>=0.1.9
|
|
limits>=3.6.0
|
|
redis>=5.0.0
|
|
resend>=0.7.0
|
|
python-dateutil>=2.9.0
|
|
pyotp>=2.9.0
|
|
httpx>=0.27.0
|
|
icalendar>=5.0.0
|
|
pytest>=8.0.0
|
|
pytest-asyncio>=0.23.0
|
|
pytest-httpx>=0.30.0
|
|
aiosqlite>=0.20.0
|
|
weasyprint>=61.0
|
|
typer>=0.12.0
|
|
rich>=13.7.0
|