- Add API token authentication middleware (X-API-Key header) - Add CORS configuration with ALLOWED_ORIGINS - Add security HTTP headers (X-Frame-Options, CSP, etc.) - Add web interface for API token configuration with localStorage - Add toggle visibility for token input - Add connection status indicator - Add auto-save token functionality - Update API documentation with authentication examples - Add deployment guides (OVH specific and general) - Add local testing guide 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
5.9 KiB
Test Local du Système de Sécurité
Ce guide te permet de tester la sécurité de l'API localement avant de déployer sur le serveur.
Étape 1 : Générer un token de test
Windows (PowerShell) :
-join ((48..57) + (65..90) + (97..122) | Get-Random -Count 64 | % {[char]$_})
Linux/Mac :
openssl rand -hex 32
Copie le token généré. Exemple : a1b2c3d4e5f6...
Étape 2 : Configurer le .env
Édite ton fichier .env et ajoute (ou modifie) ces lignes :
# Token API (colle ton token généré)
API_TOKEN=ton_token_genere_ici
# CORS en développement (tout autoriser)
ALLOWED_ORIGINS=*
# Port
PORT=8888
# Ta clé OpenAI (tu l'as déjà normalement)
OPENAI_API_KEY=sk-...
Étape 3 : Démarrer le serveur
npm run server
Résultat attendu :
Server running on http://localhost:8888
Endpoints:
GET /health - Health check
GET /info?url= - Get video/playlist info
POST /download - Download as MP3
...
Étape 4 : Tester l'authentification
Test 1 : Endpoint public (sans token) ✅
curl http://localhost:8888/health
Résultat attendu :
{"status":"ok","timestamp":"2025-..."}
Test 2 : Endpoint protégé SANS token ❌
curl http://localhost:8888/info?url=https://youtube.com/watch?v=test
Résultat attendu (ERREUR 401) :
{
"error": "Unauthorized",
"message": "API key required. Provide X-API-Key header or Authorization: Bearer <token>"
}
✅ Si tu vois cette erreur, c'est PARFAIT ! Ça veut dire que la sécurité fonctionne.
Test 3 : Endpoint protégé AVEC token ✅
Remplace ton_token_ici par le token que tu as généré :
curl -H "X-API-Key: ton_token_ici" \
"http://localhost:8888/info?url=https://youtube.com/watch?v=dQw4w9WgXcQ"
Résultat attendu (informations sur la vidéo) :
{
"success": true,
"title": "Rick Astley - Never Gonna Give You Up",
"type": "video",
"duration": 212,
...
}
✅ Si tu vois les infos de la vidéo, parfait !
Test 4 : Avec un MAUVAIS token ❌
curl -H "X-API-Key: mauvais_token_123" \
"http://localhost:8888/info?url=https://youtube.com/watch?v=test"
Résultat attendu (ERREUR 403) :
{
"error": "Forbidden",
"message": "Invalid API key"
}
✅ Si tu vois cette erreur, c'est bon !
Étape 5 : Tester l'interface web
1. Ouvre ton navigateur
Va sur : http://localhost:8888
2. Configure le token
- Clique sur le panneau "🔐 API Configuration"
- Colle ton token dans le champ "API Token"
- Clique sur "Save & Test"
Résultat attendu :
- Le statut passe en vert : "Connected ✓"
- Notification verte : "✓ API token saved successfully!"
- Le panneau se referme automatiquement
![Configuration réussie]
3. Teste un téléchargement
- Va dans l'onglet "Download"
- Entre cette URL de test :
https://www.youtube.com/watch?v=dQw4w9WgXcQ - Clique sur "Download MP3"
Résultat attendu :
- La barre de progression apparaît
- Le téléchargement démarre
- Un fichier MP3 est créé dans
./output/
4. Teste sans token (localStorage)
- Ouvre la console du navigateur (F12)
- Efface le localStorage :
localStorage.clear() - Rafraîchis la page (F5)
- Essaie de télécharger à nouveau la même vidéo
Résultat attendu :
- Une erreur apparaît : "⚠️ Authentication Error"
- Message : "API token required"
✅ C'est parfait ! Sans token dans localStorage, l'API refuse la requête.
5. Re-configure le token
- Rouvre le panneau de configuration
- Entre ton token à nouveau
- Clique "Save & Test"
- Le téléchargement devrait maintenant fonctionner
Étape 6 : Vérifier le localStorage
Dans la console du navigateur (F12) :
localStorage.getItem('video_transcriptor_api_token')
Résultat attendu :
"ton_token_genere_ici"
✅ Le token est bien sauvegardé !
Récapitulatif des Tests
| Test | Attendu | Statut |
|---|---|---|
/health sans token |
✅ 200 OK | ☐ |
/info sans token |
❌ 401 Unauthorized | ☐ |
/info avec bon token |
✅ 200 OK + données | ☐ |
/info avec mauvais token |
❌ 403 Forbidden | ☐ |
| Interface web - config token | ✅ "Connected ✓" | ☐ |
| Interface web - download avec token | ✅ Fonctionne | ☐ |
| Interface web - download sans token | ❌ Erreur auth | ☐ |
| localStorage sauvegarde token | ✅ Token présent | ☐ |
Dépannage
❌ Le serveur ne démarre pas
Erreur possible : API_TOKEN not configured in .env
Solution : Vérifie que .env contient bien API_TOKEN=...
❌ "Authentication Error" même avec token
Vérifications :
-
Le token dans
.envest identique à celui dans l'interface ?cat .env | grep API_TOKEN -
Le serveur a bien redémarré après modification de
.env?- Arrête le serveur (Ctrl+C)
- Relance :
npm run server
-
Le token ne contient pas d'espaces ?
# ❌ MAUVAIS API_TOKEN= mon_token # ✅ BON API_TOKEN=mon_token
❌ "CORS error" dans la console
Problème : La requête est bloquée par CORS
Solution : Vérifie dans .env :
ALLOWED_ORIGINS=*
Redémarre le serveur.
❌ Le localStorage ne sauvegarde pas
Problème : Le navigateur bloque le localStorage
Solutions :
- Désactive les extensions qui bloquent (uBlock, Privacy Badger)
- Vérifie que tu n'es pas en mode navigation privée
- Autorise le stockage local pour
localhost
Prochaine Étape
Si tous les tests sont ✅ OK, tu peux déployer sur le serveur OVH !
📄 Suis le guide : docs/DEPLOIEMENT_OVH.md
Bonne chance ! 🚀