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
82 lines
2.0 KiB
Markdown
82 lines
2.0 KiB
Markdown
# 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
|