ADR: Service Worker Cloudflare `auth-handler` pour la gestion de l'authentification et des sessions
- Statut : Proposé
- Date : 2026-09-24
- Auteur : Team (Agent)
1. Contexte et Problématique
Section titled â1. Contexte et ProblĂ©matiqueâPour restreindre lâaccĂšs aux documents privĂ©s de la documentation (ADR, DAT, GettingStarted internes) ainsi quâĂ dâautres ressources protĂ©gĂ©es du site, nous devons disposer dâun service dâauthentification autonome et sĂ©curisĂ© dans la couche Backend (L3).
Ce service doit :
- Authentifier les utilisateurs (login/password ou jeton sécurisé).
- Ămettre et vĂ©rifier des cookies de session sĂ©curisĂ©s (
auth_session). - Fournir une API ultra-rapide de vérification de session pour le middleware de la couche Présentation (
apps/web). - SâintĂ©grer parfaitement dans lâarchitecture Cloudflare Workers (
services/auth-handler).
2. Décision Architecturale
Section titled â2. DĂ©cision ArchitecturaleâNous dĂ©cidons de crĂ©er un nouveau Worker Cloudflare dans la couche L3 : services/auth-handler (amn-auth-handler).
Lâarchitecture retenue est la suivante :
-
Endpoints exposés :
POST /api/auth/login: VĂ©rification des identifiants et crĂ©ation dâune session.POST /api/auth/logout: RĂ©vocation de la session et suppression du cookie.GET /api/auth/verify: VĂ©rification rapide dâun jeton/cookie de session transmis par le middleware L2.
-
Stockage et Gestion de Session :
- Stockage des sessions actives dans un espace de nom Cloudflare Workers KV (
AUTH_SESSIONS_KV). - Signature des jetons de session via HMAC-SHA256 avec un secret
AUTH_SECRET(injecté via.env/ Cloudflare Secrets). - Positionnement de cookies
HttpOnly; Secure; SameSite=Lax.
- Stockage des sessions actives dans un espace de nom Cloudflare Workers KV (
-
Liaison L2 â L3 (Service Binding) :
- En production,
apps/webcommunique avecamn-auth-handlervia la liaison Service BindingAUTH_HANDLER. - En développement local, communication via fallback HTTP direct sur
http://localhost:8790.
- En production,
3. Justification du choix
Section titled â3. Justification du choixâ3.1. Pourquoi un Worker dĂ©diĂ© dans services/auth-handler ?
Section titled â3.1. Pourquoi un Worker dĂ©diĂ© dans services/auth-handler ?â- Isolation architecturale L3 : Conforme aux rĂšgles du projet. La logique dâauthentification et le secret ne rĂ©sident pas dans le front-end Astro mais dans un microservice dĂ©diĂ©.
- Réutilisabilité : Le Worker
auth-handlerpourra ultĂ©rieurement sĂ©curiser dâautres services (ex: tableaux de bord admin, soumissions de formulaires rĂ©servĂ©es).
3.2. Pourquoi Cloudflare KV + HTTP-Only Cookies ?
Section titled â3.2. Pourquoi Cloudflare KV + HTTP-Only Cookies ?â- SĂ©curitĂ© maximale contre XSS : Les jetons dans un cookie
HttpOnlyne sont pas lisibles par du code JavaScript sâexĂ©cutant dans le navigateur. - RĂ©vocation instantanĂ©e : GrĂące Ă Workers KV, une session peut ĂȘtre invalidĂ©e immĂ©diatement lors du logout sans attendre lâexpiration du jeton.
4. Conséquences de la décision
Section titled â4. ConsĂ©quences de la dĂ©cisionâEffets Positifs (Avantages)
Section titled âEffets Positifs (Avantages)â- Latence ultra-faible : La vĂ©rification de session via Service Binding sâexĂ©cute directement en mĂ©moire sur le rĂ©seau Cloudflare sans passer par Internet.
- Conformité aux rÚgles du projet : Respect strict du modÚle 3 couches (L1, L2, L3).
Effets Négatifs (Inconvénients & Risques)
Section titled âEffets NĂ©gatifs (InconvĂ©nients & Risques)â- Gestion du dual-mode : Code dâintĂ©gration dans
apps/webgĂ©rant Ă la fois les appels HTTP locaux (dev) et les Service Bindings (prod). - Configuration Wrangler : Ajout dâune liaison
AUTH_HANDLERetAUTH_SESSIONS_KVdanswrangler.toml.
5. Alternatives Exclues
Section titled â5. Alternatives Excluesâ- Service tiers SaaS (Auth0, Clerk, Firebase Auth) : Exclu pour cette Ă©tape afin dâĂ©viter la dĂ©pendance Ă un service externe payant/lourd et conserver la souverainetĂ© complĂšte sur lâinfrastructure Cloudflare.
- Authentification intĂ©grĂ©e directement dans Astro : Exclue car la logique mĂ©tier et le stockage dâauth doivent rĂ©sider dans la couche L3.
6. Historique des modifications
Section titled â6. Historique des modificationsâ| Date | Version | Description | Auteur |
|---|---|---|---|
| 2026-09-24 | 1.0 | CrĂ©ation initiale de lâADR Auth Worker | Team (Agent) |