Files
boc/docs/auth/README.md
T

82 lines
2.0 KiB
Markdown
Raw Normal View History

# 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