# 🔐 Variables d'Environnement - UnionFlow **Date :** 17 novembre 2025 **Objectif :** Documenter toutes les variables d'environnement nĂ©cessaires --- ## 📋 UnionFlow Client ### Variables Requises | Variable | Description | Exemple | OĂč l'obtenir | |----------|-------------|---------|--------------| | `KEYCLOAK_CLIENT_SECRET` | Secret du client Keycloak `unionflow-client` | `7dnWMwlabtoyp08F6FIuDxzDPE5VdUF6` | Keycloak Admin Console | | `UNIONFLOW_BACKEND_URL` | URL du backend (optionnel, dĂ©faut: `http://localhost:8085`) | `http://localhost:8085` | - | ### Variables Optionnelles | Variable | Description | Valeur par dĂ©faut | |----------|-------------|-------------------| | `SESSION_TIMEOUT` | Timeout de session en secondes | `1800` (30 min) | | `REMEMBER_ME_DURATION` | DurĂ©e "Se souvenir de moi" en secondes | `604800` (7 jours) | | `ENABLE_CSRF` | Activer la protection CSRF | `true` | | `PASSWORD_MIN_LENGTH` | Longueur minimale du mot de passe | `8` | | `PASSWORD_REQUIRE_SPECIAL` | Exiger des caractĂšres spĂ©ciaux | `true` | | `MAX_LOGIN_ATTEMPTS` | Nombre max de tentatives de connexion | `5` | | `LOCKOUT_DURATION` | DurĂ©e de verrouillage en secondes | `300` (5 min) | ### Comment obtenir le secret Keycloak 1. **Se connecter Ă  Keycloak Admin Console** - URL : `https://security.lions.dev/admin` - Realm : `unionflow` 2. **Naviguer vers le client** - Menu : `Clients` → `unionflow-client` 3. **RĂ©cupĂ©rer le secret** - Onglet : `Credentials` - Copier le `Client Secret` 4. **DĂ©finir la variable d'environnement** ```bash # Windows PowerShell $env:KEYCLOAK_CLIENT_SECRET="votre-secret-ici" # Linux/Mac export KEYCLOAK_CLIENT_SECRET="votre-secret-ici" ``` --- ## 📋 UnionFlow Server ### Variables Requises | Variable | Description | Exemple | OĂč l'obtenir | |----------|-------------|---------|--------------| | `KEYCLOAK_CLIENT_SECRET` | Secret du client Keycloak `unionflow-server` | `unionflow-secret-2025` | Keycloak Admin Console | | `DB_PASSWORD` | Mot de passe de la base de donnĂ©es PostgreSQL | `unionflow123` | Configuration DB | | `DB_USERNAME` | Nom d'utilisateur de la base de donnĂ©es (optionnel, dĂ©faut: `unionflow`) | `unionflow` | Configuration DB | | `DB_URL` | URL de connexion Ă  la base de donnĂ©es (optionnel, dĂ©faut: `jdbc:postgresql://localhost:5432/unionflow`) | `jdbc:postgresql://localhost:5432/unionflow` | Configuration DB | ### Variables Optionnelles | Variable | Description | Valeur par dĂ©faut | |----------|-------------|-------------------| | `DB_PASSWORD_DEV` | Mot de passe DB pour dĂ©veloppement | `skyfile` | | `CORS_ORIGINS` | Origines CORS autorisĂ©es (sĂ©parĂ©es par virgules) | `http://localhost:8086,https://unionflow.lions.dev,https://security.lions.dev` | ### Comment obtenir le secret Keycloak (Server) 1. **Se connecter Ă  Keycloak Admin Console** - URL : `https://security.lions.dev/admin` (ou `http://localhost:8180` pour dev local) - Realm : `unionflow` 2. **Naviguer vers le client** - Menu : `Clients` → `unionflow-server` 3. **RĂ©cupĂ©rer le secret** - Onglet : `Credentials` - Copier le `Client Secret` --- ## 🚀 Configuration pour DĂ©veloppement Local ### Option 1 : Variables d'environnement systĂšme **Windows PowerShell :** ```powershell $env:KEYCLOAK_CLIENT_SECRET="7dnWMwlabtoyp08F6FIuDxzDPE5VdUF6" $env:DB_PASSWORD="skyfile" ``` **Linux/Mac :** ```bash export KEYCLOAK_CLIENT_SECRET="7dnWMwlabtoyp08F6FIuDxzDPE5VdUF6" export DB_PASSWORD="skyfile" ``` ### Option 2 : Fichier .env (si supportĂ©) CrĂ©ez un fichier `.env` Ă  la racine du projet avec : ```properties KEYCLOAK_CLIENT_SECRET=7dnWMwlabtoyp08F6FIuDxzDPE5VdUF6 DB_PASSWORD=skyfile ``` **⚠ IMPORTANT :** Le fichier `.env` est dĂ©jĂ  dans `.gitignore` et ne sera jamais commitĂ©. ### Option 3 : Valeurs par dĂ©faut dans application-dev.properties Pour le dĂ©veloppement uniquement, des valeurs par dĂ©faut sont configurĂ©es dans `application-dev.properties` : - Client : Secret Keycloak avec valeur par dĂ©faut - Server : Mot de passe DB avec valeur par dĂ©faut **⚠ ATTENTION :** Ces valeurs par dĂ©faut sont UNIQUEMENT pour le dĂ©veloppement local. En production, utilisez toujours des variables d'environnement. --- ## 🔒 SĂ©curitĂ© en Production ### ⚠ RÈGLES IMPORTANTES 1. **NE JAMAIS** commiter de secrets dans Git 2. **TOUJOURS** utiliser des variables d'environnement en production 3. **NE JAMAIS** utiliser les valeurs par dĂ©faut en production 4. **UTILISER** un gestionnaire de secrets (Vault, AWS Secrets Manager, etc.) ### Configuration Production RecommandĂ©e ```bash # Utiliser un gestionnaire de secrets # Exemple avec Kubernetes Secrets kubectl create secret generic unionflow-secrets \ --from-literal=KEYCLOAK_CLIENT_SECRET='votre-secret' \ --from-literal=DB_PASSWORD='votre-mot-de-passe' ``` --- ## 🐛 DĂ©pannage ### Erreur : "Invalid client or Invalid client credentials" **Cause :** Le secret Keycloak n'est pas fourni ou est incorrect. **Solutions :** 1. VĂ©rifier que la variable `KEYCLOAK_CLIENT_SECRET` est dĂ©finie 2. VĂ©rifier que le secret correspond au client dans Keycloak 3. VĂ©rifier que le client existe dans Keycloak 4. VĂ©rifier que le client est activĂ© dans Keycloak ### Erreur : "Connection refused" ou "Cannot connect to database" **Cause :** La base de donnĂ©es n'est pas accessible ou les credentials sont incorrects. **Solutions :** 1. VĂ©rifier que PostgreSQL est dĂ©marrĂ© 2. VĂ©rifier que les variables `DB_USERNAME`, `DB_PASSWORD`, `DB_URL` sont correctes 3. VĂ©rifier la connectivitĂ© rĂ©seau vers la base de donnĂ©es --- **Date de crĂ©ation :** 17 novembre 2025 **DerniĂšre mise Ă  jour :** 17 novembre 2025