Skip to content

Type de ressource : Cloudflare Worker (Microservice FaaS d’Authentification)
Fichier source : services/auth-handler/src/index.ts
Statut : Proposé / DOC

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).

  • 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.
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)
[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]
Variable / Secret Type Description
ENVIRONMENT Var Environnement (dev / production)
AUTH_SECRET Secret Secret HMAC pour la signature et le chiffrement du jeton
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" }
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 });
}
};
  1. Isolation des credentials : Le secret AUTH_SECRET n’est jamais exposĂ© Ă  la couche PrĂ©sentation ni au client navigateur.
  2. Cookies sécurisés : Propriétés HttpOnly; Secure; SameSite=Lax.
  3. KV Revocation : Déconnexion effective immédiatement sur toutes les instances de bordure.
Date Version Description Auteur
2026-09-24 1.0 Création initiale ObjectData Auth Handler Worker Team (Agent)
Edit page

Last updated: