Files
boc/quixzoom-sso-auth
Bernt 48ea61cdcc docs: add quixzoom-auth-core product to AAMOS
- Product documentation in docs/products/
- Updated MEMORY.md with product info
- quiXzoom Auth Core as AAMOS Identity product
2026-07-14 09:58:53 +00:00
..

quiXzoom SSO Authentication Service

Microsoft-like single sign-on för alla quixzoom-egendomar.

Arkitektur

┌─────────────────┐     ┌─────────────────┐     ┌─────────────────┐
│  quixzoom.com   │     │   app.quixzoom  │     │  quixzoom.se    │
│  (landing)      │     │   (app/web)     │     │  (marknad)      │
└────────┬────────┘     └────────┬────────┘     └────────┬────────┘
         │                       │                       │
         └───────────────────────┼───────────────────────┘
                                 │
                    ┌─────────────▼─────────────┐
                    │  auth.quixzoom.com        │
                    │  (SSO / JWT / Cookies)    │
                    └─────────────┬─────────────┘
                                  │
                    ┌─────────────▼─────────────┐
                    │   Redis (sessions)        │
                    └───────────────────────────┘

Flöde

Inloggad i appen → Automatiskt inloggad på webb

  1. Användare loggar in i quiXzoom-appen
  2. Appen får JWT access token + refresh token
  3. Cookies sätts på .quixzoom.com (shared across subdomains)
  4. Användare besöker www.quixzoom.com/mina-sidor
  5. Webbsidan kollar qz_access_token cookie
  6. Token är giltig → användare är inloggad utan att göra något
Cookie: qz_access_token=xxx
Domain: .quixzoom.com
Path: /
Secure: true
SameSite: lax
HttpOnly: true

Detta gör att cookien skickas med till:

  • www.quixzoom.com
  • app.quixzoom.com
  • quixzoom.se
  • quixzoom.de
  • etc.

Endpoints

Endpoint Beskrivning
POST /auth/login E-post + lösenord, sätter cookies
POST /auth/refresh Förnya access token
POST /auth/logout Logga ut, rensa cookies
GET /auth/me Hämta inloggad användare
GET /auth/check Snabb auth-check (200/401)
GET /auth/.well-known/jwks.json Publik nyckel för verifiering

Användning

Webb (JavaScript)

import { quixzoomAuth } from './sso-client.js';

// Kolla om inloggad
const user = await quixzoomAuth.getUser();
if (user) {
  console.log('Inloggad som:', user.email);
}

// Logga in
await quixzoomAuth.login('user@example.com', 'password');

// Logga ut
await quixzoomAuth.logout();

React Native / App

// Samma client, men skickar tokens i Authorization-header
const response = await fetch('https://api.quixzoom.com/missions', {
  headers: {
    'Authorization': `Bearer ${accessToken}`
  }
});

Driftsättning

docker-compose up -d

Miljövariabler

Variabel Default Beskrivning
PORT 8080 Server port
REDIS_HOST localhost Redis server
JWT_PRIVATE_KEY_PATH - Sökväg till privat nyckel
JWT_PUBLIC_KEY_PATH - Sökväg till publik nyckel

Säkerhet

  • RS256-signerade JWT-tokens
  • HttpOnly cookies (skyddade mot XSS)
  • Secure flag (endast HTTPS)
  • SameSite=lax (CSRF-skydd)
  • Refresh token-rotation
  • Token-blacklisting vid utloggning