Auth Handler Worker
Type de ressource : Cloudflare Worker (Microservice FaaS dâAuthentification)
Fichier source :services/auth-handler/src/index.ts
Statut : Proposé / DOC
1. Vue dâensemble
Section titled â1. Vue dâensembleâ1.1. Description
Section titled â1.1. DescriptionâWorker Cloudflare L3 dĂ©diĂ© Ă la gestion de lâauthentification et du contrĂŽle de session pour les documents et ressources rĂ©servĂ©s du site (ex: spĂ©cifications et guides privĂ©s de la documentation Starlight).
1.2. Objectif
Section titled â1.2. Objectifâ- VĂ©rifier les identifiants utilisateur (login/password).
- Ămettre et valider des cookies HTTP-Only de session (
auth_session). - GĂ©rer la persistance et lâinvalidation instantanĂ©e des sessions via Cloudflare Workers KV (
AUTH_SESSIONS_KV). - Permettre une interconnexion haute performance avec Astro (
apps/web) via Cloudflare Service Binding.
1.3. Caractéristiques
Section titled â1.3. CaractĂ©ristiquesâ| PropriĂ©tĂ© | Valeur |
|---|---|
| Type | Microservice dâauthentification L3 |
| Trigger | HTTP fetch & Service Binding |
| Routes publiques | /api/auth/login, /api/auth/logout, /api/auth/verify, /health |
| Environnements | Development, Production |
| Consommateurs | Astro SSR Middleware (apps/web) |
2. Architecture et flux
Section titled â2. Architecture et fluxâ[Astro SSR Middleware (L2)] â âââ Service Binding (AUTH_HANDLER) en prod âââ HTTP fetch (http://localhost:8790) en dev â âŒ[Auth Handler Worker (L3)] â âââ /api/auth/login --> Validation identifiants, crĂ©ation session dans KV, positionnement cookie âââ /api/auth/verify --> Lecture cookie `auth_session`, vĂ©rification dans KV, retour donnĂ©es user âââ /api/auth/logout --> Invalidation session dans KV, suppression cookie â âŒ[Workers KV : AUTH_SESSIONS_KV]3. Configuration
Section titled â3. Configurationâ3.1. Variables dâenvironnement & Secrets
Section titled â3.1. Variables dâenvironnement & Secretsâ| Variable / Secret | Type | Description |
|---|---|---|
ENVIRONMENT |
Var | Environnement (dev / production) |
AUTH_SECRET |
Secret | Secret HMAC pour la signature et le chiffrement du jeton |
3.2. Bindings Cloudflare
Section titled â3.2. Bindings Cloudflareâ| Binding | Type | Description |
|---|---|---|
AUTH_SESSIONS_KV |
KV Namespace | Stockage KV des jetons et sessions actives |
3.3. Configuration Wrangler (services/auth-handler/wrangler.toml)
Section titled â3.3. Configuration Wrangler (services/auth-handler/wrangler.toml)âname = "amn-auth-handler"main = "src/index.ts"compatibility_date = "2025-07-18"compatibility_flags = ["nodejs_compat"]
[vars]ENVIRONMENT = "dev"
[[kv_namespaces]]binding = "AUTH_SESSIONS_KV"id = "auth-sessions-kv-id"
[env.dev]name = "amn-auth-handler-dev"vars = { ENVIRONMENT = "dev" }
[env.prod]name = "amn-auth-handler-prod"vars = { ENVIRONMENT = "prod" }4. Implémentation (Architecture de code)
Section titled â4. ImplĂ©mentation (Architecture de code)âimport { z } from 'zod';
const LoginSchema = z.object({ email: z.string().email(), password: z.string().min(6),});
export interface Env { AUTH_SESSIONS_KV: KVNamespace; AUTH_SECRET: string; ENVIRONMENT: string;}
export default { async fetch(request: Request, env: Env): Promise<Response> { const url = new URL(request.url);
if (request.method === 'POST' && url.pathname === '/api/auth/login') { return handleLogin(request, env); } if (request.method === 'POST' && url.pathname === '/api/auth/logout') { return handleLogout(request, env); } if ((request.method === 'GET' || request.method === 'POST') && url.pathname === '/api/auth/verify') { return handleVerify(request, env); } if (request.method === 'GET' && url.pathname === '/health') { return new Response(JSON.stringify({ status: 'healthy', environment: env.ENVIRONMENT }), { headers: { 'Content-Type': 'application/json' }, }); }
return new Response('Not Found', { status: 404 }); }};5. Sécurité
Section titled â5. SĂ©curitĂ©â- Isolation des credentials : Le secret
AUTH_SECRETnâest jamais exposĂ© Ă la couche PrĂ©sentation ni au client navigateur. - Cookies sĂ©curisĂ©s : PropriĂ©tĂ©s
HttpOnly; Secure; SameSite=Lax. - KV Revocation : Déconnexion effective immédiatement sur toutes les instances de bordure.
6. Historique des modifications
Section titled â6. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-24 | 1.0 | Création initiale ObjectData Auth Handler Worker | Team (Agent) |