Analyse du Système d'Authentification Starlight - État des Lieux (CORRIGÉ)
Analyse du Système d'Authentification Starlight - État des Lieux (CORRIGÉ)
Documentation technique
Basé sur mon analyse approfondie du projet, voici le rapport complet sur le système d’authentification aux documents privés du site Starlight :
1. État des Lieux1/2
Architecture actuelle :
- Middleware Astro (<ref_file file=“/home/anderson/PP/apps/web/src/middleware.ts” />) : Intercepte toutes les requêtes vers
/docs/*et/gettingStarted/*(CORRIGÉ) - Worker Auth-Handler (<ref_file file=“/home/anderson/PP/services/auth-handler/src/index.ts” />) : Microservice L3 gérant l’authentification
- Service Binding (<ref_file file=“/home/anderson/PP/apps/web/wrangler.toml” />) : Lien entre l’app web et auth-handler via
AUTH_HANDLER - Configuration Starlight (<ref_file file=“/home/anderson/PP/apps/web/astro.config.mjs” />) : Utilise
docsLoader()avec copie de fichiers via scripts predev/prebuild (CORRIGÉ)
1. État des Lieux2/2
Stack technique :
- Astro SSR avec adapter Cloudflare
- Cloudflare Workers + Service Bindings
- Cloudflare D1 + KV pour stockage des données
- Better Auth Cloudflare (à intégrer) pour l’authentification
- Middleware Astro pour contrôle d’accès
2. Documents Privés vs Publics1/2
État actuel :
- TOUS les documents sont considérés PRIVÉS par défaut (ligne 32 du middleware :
let isPrivate = true) - Seule exception : Le document
overviewest explicitement public (lignes 48-50) - Schéma de visibilité : Le champ
visibilitydoit être implémenté pour permettre des documents publics spécifiques - Aucun document n’a actuellement de champ
visibilitydans son frontmatter - Stratégie requise : Tous les docs privés par défaut, avec possibilité d’activation publique facile
2. Documents Privés vs Publics2/2
Structure des documents :
/docs/*: Documentation technique (L1, L2, L3, PM, SOP) - TOUS PRIVÉS PAR DÉFAUT/gettingStarted/*: Guides de prise en main - TOUS PRIVÉS PAR DÉFAUT/overview: Page d’accueil docs - PUBLIC- Gestion des fichiers : Copie via scripts predev/prebuild (<ref_file file=“/home/anderson/PP/apps/web/package.json” lines=“9,11” />) depuis
../../docset../../GettingStarted
3. Mécanisme d’Authentification1/2
Flux actuel :
Utilisateur → Requête /docs/xxx ↓ [Middleware Astro] ↓ Document public ? → Non (sauf overview) ↓ Cookie auth_session présent ? ↓ Oui → Vérification via auth-handler ↓ Valide → Accès autorisé Invalide → Redirection /login3. Mécanisme d’Authentification2/2
Implémentation :
- Développement local : HTTP fetch vers
http://127.0.0.1:8790/api/auth/verify - Production : Service Binding
env.AUTH_HANDLER(Cloudflare Workers) - NON CONFIGURÉ (env=dev uniquement) - Cookie :
auth_sessionavec configurationHttpOnly; SameSite=Lax - Session : Stockée dans KV avec TTL 24h
- Stack auth : Better Auth Cloudflare à intégrer (remplacement du système actuel)
4. Login vs Sign Up1/2
État actuel :
- Seul LOGIN implémenté : Page <ref_file file=“/home/anderson/PP/apps/web/src/pages/login.astro” />
- PAS de SIGN UP : Aucun mécanisme d’inscription
- Authentification hardcodée : Credentials administrateur configurés via variables d’environnement :
DEFAULT_ADMIN_EMAIL(défaut:admin@example.com)DEFAULT_ADMIN_PASSWORD(défaut:password123)
- Single user : Un seul utilisateur admin avec rôle ‘admin’
4. Login vs Sign Up2/2
Endpoints auth-handler :
POST /api/auth/login: AuthentificationPOST /api/auth/logout: DéconnexionGET /api/auth/verify: Vérification de sessionGET /health: Health check
5. Actions à Faire1/2
Immédiat (Urgent) :
- Corriger les chemins du middleware : ✅ CORRIGÉ -
/getting-started/→/gettingStarted/ - Clarifier la gestion des fichiers : Les symlinks ne fonctionnent pas, utiliser les scripts predev/prebuild actuels
- Intégrer Better Auth Cloudflare : Remplacer le système auth-handler actuel par better-auth-cloudflare
- Configurer D1 + KV : Pour Better Auth (users, sessions, accounts)
5. Actions à Faire2/2
Court terme :
5. Implémenter le schéma de visibilité : visibility: 'public' | 'private' dans le frontmatter Starlight
6. Configurer le middleware : Pour lire et respecter le champ visibility de chaque document
7. Mettre à jour la config Starlight : Sidebar avec les bons répertoires (docs et gettingStarted)
8. Sécuriser les credentials : Remplacer les valeurs par défaut par des secrets via .env
Moyen terme : 9. Configurer l’environnement prod : Quand les données prod seront disponibles 10. Implémenter sign up : Avec Better Auth pour gérer l’inscription multi-users 11. Gérer les rôles et permissions : Via Better Auth pour différents niveaux d’accès
6. Recommandations1/7
Sécurité :
- ✅ Architecture solide : Service Binding Cloudflare est la bonne approche
- ⚠️ Authentification actuelle obsolète : Le système auth-handler custom doit être remplacé par Better Auth Cloudflare
- ⚠️ Credentials vulnérables : Remplacer les valeurs par défaut par des secrets via
.env - ⚠️ Cookie non sécurisé : Ajouter flag
Secureen production - ✅ Middleware corrigé : Chemins
/gettingStarted/maintenant corrects
6. Recommandations2/7
Architecture :
- ✅ Bonne séparation des responsabilités : L2 (Présentation) vs L3 (Backend)
- ✅ Service Binding approprié : Communication Workers optimisée
- ⚠️ Gestion des fichiers : Scripts predev/prebuild fonctionnels mais symlinks inutilisés
- ⚠️ Schéma de visibilité à implémenter : Nécessaire pour gérer public vs privé
6. Recommandations3/7
Stack technique :
- ✅ Astro SSR + Cloudflare : Bon choix pour l’architecture
- ✅ Better Auth Cloudflare : Solution moderne et adaptée à Cloudflare Workers
- ✅ D1 + KV : Stack appropriée pour Better Auth
- ⚠️ Env=dev uniquement : Configuration prod non encore disponible
6. Recommandations4/7
Expérience utilisateur :
- ⚠️ Pas d’inscription : Actuellement limité à un seul admin
- ⚠️ UX basique : Page de login fonctionnelle mais minimaliste
- ✅ Redirection fonctionnelle :
redirectTobien géré - ⚠️ Visibilité non configurable : Impossible de marquer des docs comme publics
6. Recommandations5/7
Conformité documentation officielle :
- ✅ Service Binding : Conforme aux best practices Cloudflare
- ✅ Middleware Astro : Utilisation correcte de
defineMiddleware - ✅ Better Auth : Solution recommandée par documentation Astro pour Cloudflare
- ⚠️ Gestion fichiers : Scripts de copie fonctionnels mais optimisation possible
6. Recommandations6/7
Prochaines étapes recommandées :
- Intégrer Better Auth Cloudflare en remplacement du système auth-handler actuel
- Implémenter le schéma de visibilité
visibility: 'public' | 'private'dans Starlight - Configurer D1 + KV pour Better Auth (users, sessions, accounts)
- Mettre à jour le middleware pour lire et respecter le champ
visibility - Sécuriser les credentials via variables d’environnement
- Tester le flux complet avec Better Auth en environnement dev
- Préparer la configuration pour l’environnement prod quand disponible
6. Recommandations7/7
Le système nécessite une refonte de l’authentification vers Better Auth Cloudflare et l’implémentation du système de visibilité pour être conforme aux requirements.