# quiXzoom Passwordless Authentication ## Översikt Passwordless cross-device authentication mellan quiXzoom app och webb. ## Komponenter ### 1. Arkitektur - **Fil:** `docs/auth/passwordless-architecture.md` - **Innehåll:** Komplett arkitektur med sekvensdiagram, API-spec, databasschema, säkerhetsanalys ### 2. Backend - **Mapp:** `iom/quixzoom-auth-service/` - **Teknik:** FastAPI + Redis + Python - **Endpoints:** - `POST /v1/auth/passwordless/initiate` — Initiera inloggning - `POST /v1/auth/passwordless/approve` — Godkänn från app - `GET /v1/auth/passwordless/status` — Polla status - `POST /v1/auth/passwordless/reject` — Neka - `POST /v1/auth/passwordless/cancel` — Avbryt ### 3. Webb-frontend - **Fil:** `quixzoom-market-pages/se/login/index.html` - **Funktioner:** - QR-kod för snabb inloggning - Polling var 2:e sekund - Deep link till appen - Fallback till email/password ### 4. App-frontend - **Filer:** - `iom/quixzoom-app/src/features/auth/PasswordlessApprovalScreen.tsx` - `iom/quixzoom-app/src/features/auth/usePasswordlessAuth.ts` - **Funktioner:** - Push-notifieringar - Deep link-hantering (`quixzoom://auth/approve`) - Godkänn/neka UI ## Flöde 1. Användare klickar "Logga in" på quixzoom.se 2. Webb visar QR-kod + deep link 3. Användare öppnar appen och skannar/godkänner 4. App skickar godkännande till backend 5. Webb pollar och får JWT-token 6. Användaren är inloggad! ## Deploy ### Backend ```bash cd iom/quixzoom-auth-service docker-compose up -d ``` ### Webb ```bash aws s3 sync quixzoom-market-pages/se/login/ s3://quixzoom-landing-prod/markets/se/login/ ``` ### App - Bygg och deploya via Expo EAS - Uppdatera deep link-konfiguration i app.json ## Säkerhet - Engångstokens (32 bytes CSPRNG) - 15-minuters TTL på sessioner - Rate limiting (10/min per IP) - Device fingerprinting - JWT med session binding ## Status ✅ Arkitektur — Klar ✅ Backend-modeller — Klar ✅ Backend-routes — Klar ✅ Webb-frontend — Klar ✅ App-frontend — Klar ⏳ Deploy — Pågår