# 🔒 Full Lockdown Security - Guide Rapide ## ✅ C'EST FAIT ! Tous les endpoints sont maintenant sĂ©curisĂ©s. Voici ce qui a changĂ© : ### Avant → AprĂšs **AVANT :** N'importe qui pouvait : - ❌ Lire le lexique complet - ❌ Voir les stats - ❌ Recharger les lexiques - ❌ Debugger les prompts - ❌ Faire des traductions batch **APRÈS :** Personne ne peut rien faire sans token valide - ✅ Tous les endpoints nĂ©cessitent authentification - ✅ Interface bloquĂ©e sans connexion - ✅ Auto-logout sur session expirĂ©e - ✅ Rate limiting sur traductions --- ## 🚀 DĂ©marrage rapide ### 1. Lancer le serveur ```bash cd ConfluentTranslator npm start ``` ### 2. RĂ©cupĂ©rer le token admin **Le serveur va afficher :** ``` 🔑 Admin token created: c32b04be-2e68-4e15-8362-xxxxx ⚠ SAVE THIS TOKEN - It will not be shown again! ``` **OU lire le fichier :** ```bash cat data/tokens.json ``` ### 3. Se connecter 1. Ouvrir `http://localhost:3000` 2. Entrer le token admin dans le champ "API Key" 3. Cliquer "Se connecter" 4. ✅ L'interface se charge --- ## đŸ§Ș Tester la sĂ©curitĂ© ### Test automatique (Linux/Mac/WSL) ```bash chmod +x test-security.sh ./test-security.sh ``` ### Test manuel rapide ```bash # Sans auth (doit Ă©chouer avec 401) curl http://localhost:3000/api/stats # Avec auth (doit rĂ©ussir) TOKEN="votre-token" curl http://localhost:3000/api/stats -H "x-api-key: $TOKEN" ``` **RĂ©sultat attendu :** - Sans auth : `{"error":"API key missing"}` (401) - Avec auth : JSON avec les stats --- ## 📝 Ce qui a Ă©tĂ© modifiĂ© ### Backend (`server.js`) ```diff // Avant - app.get('/api/stats', (req, res) => { + app.get('/api/stats', authenticate, (req, res) => { // Avant - app.post('/api/reload', (req, res) => { + app.post('/api/reload', authenticate, requireAdmin, (req, res) => { ``` **Tous les endpoints ont `authenticate` maintenant** ### Frontend (`index.html`) ```diff // Avant - const response = await fetch('/api/stats'); + const response = await authFetch('/api/stats'); // authFetch() gĂšre automatiquement : // - Header x-api-key // - Auto-logout sur 401/403 // - Erreurs de session ``` --- ## 🔑 Gestion des tokens ### OĂč sont les tokens ? ``` ConfluentTranslator/data/tokens.json ``` ### Format : ```json { "c32b04be-2e68-4e15-8362-xxx": { "name": "admin", "role": "admin", "enabled": true, "createdAt": "2025-12-02T..." } } ``` ### CrĂ©er un nouveau token admin ```bash # Supprimer le fichier et redĂ©marrer rm data/tokens.json npm start ``` ### CrĂ©er un token user (via API admin) ```bash TOKEN_ADMIN="votre-token-admin" curl -X POST http://localhost:3000/api/admin/tokens \ -H "x-api-key: $TOKEN_ADMIN" \ -H "Content-Type: application/json" \ -d '{"name":"user1","role":"user"}' ``` --- ## đŸ›Ąïž Endpoints sĂ©curisĂ©s ### Public (pas d'auth) - `GET /` - Page HTML - `GET /api/health` - Health check ### ProtĂ©gĂ© (auth requise) - `GET /api/stats` - `GET /api/lexique/:variant` - `GET /api/search` - `GET /api/validate` - `POST /translate` - `POST /api/translate/*` - `POST /api/analyze/coverage` - `POST /api/debug/prompt` ### Admin only - `POST /api/reload` - `POST /api/admin/*` --- ## ⚠ Troubleshooting ### "API key missing" partout **ProblĂšme :** Pas connectĂ© ou token invalide **Solution :** Se connecter avec un token valide ### Interface blanche aprĂšs login **ProblĂšme :** Erreur de chargement **Solution :** Ouvrir la console (F12) et vĂ©rifier les erreurs ### "Session expirĂ©e" en boucle **ProblĂšme :** Token dĂ©sactivĂ© cĂŽtĂ© serveur **Solution :** VĂ©rifier `data/tokens.json` que `enabled: true` ### Token admin perdu **ProblĂšme :** Fichier `tokens.json` supprimĂ© ou corrompu **Solution :** ```bash rm data/tokens.json npm start # Un nouveau token sera créé ``` --- ## 📚 Documentation complĂšte - **Tests dĂ©taillĂ©s :** Voir `SECURITY_TEST.md` - **Changelog :** Voir `CHANGELOG_SECURITY.md` - **Script de test :** Voir `test-security.sh` --- ## ✅ Checklist - [x] Tous les endpoints protĂ©gĂ©s - [x] Interface bloquĂ©e sans auth - [x] Auto-logout sur session expirĂ©e - [x] Rate limiting actif - [x] Token admin créé automatiquement - [x] Documentation complĂšte - [x] Scripts de test fournis --- ## 🎉 RĂ©sultat **Full lockdown opĂ©rationnel !** Personne ne peut accĂ©der aux donnĂ©es sans authentification. Le systĂšme est sĂ©curisĂ© de bout en bout. **Questions ?** Voir `SECURITY_TEST.md` pour plus de dĂ©tails.