169 lines
5.6 KiB
Markdown
169 lines
5.6 KiB
Markdown
# 🔐 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
|
|
|