6989a98d75
- Arkitektur: docs/auth/passwordless-architecture.md - Backend: iom/quixzoom-auth-service/ (FastAPI + Redis) - Webb: quixzoom-market-pages/se/login/ (QR-kod + polling) - App: iom/quixzoom-app/src/features/auth/ (push + deep links) Flöde: QR-kod → app-godkännande → webb-inloggad
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 inloggningPOST /v1/auth/passwordless/approve— Godkänn från appGET /v1/auth/passwordless/status— Polla statusPOST /v1/auth/passwordless/reject— NekaPOST /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.tsxiom/quixzoom-app/src/features/auth/usePasswordlessAuth.ts
- Funktioner:
- Push-notifieringar
- Deep link-hantering (
quixzoom://auth/approve) - Godkänn/neka UI
Flöde
- Användare klickar "Logga in" på quixzoom.se
- Webb visar QR-kod + deep link
- Användare öppnar appen och skannar/godkänner
- App skickar godkännande till backend
- Webb pollar och får JWT-token
- Användaren är inloggad!
Deploy
Backend
cd iom/quixzoom-auth-service
docker-compose up -d
Webb
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