Files
boc/docs/auth
Bernt 6989a98d75 feat: Passwordless cross-device authentication
- 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
2026-07-07 07:11:50 +00:00
..

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

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