# 🔐 Configuration OIDC - Encryption Secret

## ❓ Qu'est-ce que `quarkus.oidc.token-state-manager.encryption-secret` ?

Cette propriété est **requise** lorsque OIDC est activé dans Quarkus. Elle sert à chiffrer les cookies d'état utilisés lors du flux d'authentification OIDC.

## ⚠️ Exigences

- **Longueur minimale** : 16 caractères
- **Recommandé** : 32 caractères ou plus pour une meilleure sécurité
- **Type** : Chaîne de caractères aléatoire

## 📍 Où trouver le secret dans Keycloak ?

### Pour le Client (lions-user-manager-client)

1. **Accéder à Keycloak Admin Console** : `http://localhost:8180/admin`
2. **Se connecter** avec `admin` / `admin`
3. **Sélectionner le Realm** : `lions-user-manager` (ou le realm que vous utilisez)
4. **Aller dans** : `Clients` → `lions-user-manager-client`
5. **Onglet** : `Credentials` (ou `Settings` → `Credentials`)
6. **Copier** : Le `Client Secret` (ou `Secret`)

### Exemple de configuration

```properties
# Dans application-dev.properties (CLIENT)
quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager
quarkus.oidc.client-id=lions-user-manager-client
quarkus.oidc.credentials.secret=<SECRET_COPIÉ_DE_KEYCLOAK>
quarkus.oidc.token-state-manager.encryption-secret=<CLÉ_DE_CHIFFREMENT_16_CHARS_MIN>
```

## 🔑 Différence entre les deux secrets

### 1. `quarkus.oidc.credentials.secret`
- **Source** : Keycloak (Client Secret)
- **Usage** : Authentification du client auprès de Keycloak
- **Où le trouver** : Keycloak Admin Console → Clients → [votre-client] → Credentials → Secret

### 2. `quarkus.oidc.token-state-manager.encryption-secret`
- **Source** : Vous (générez vous-même)
- **Usage** : Chiffrement des cookies d'état OIDC
- **Génération** : Chaîne aléatoire d'au moins 16 caractères

## ✅ Solution actuelle

Dans `application-dev.properties` du **client**, j'ai ajouté :

```properties
quarkus.oidc.token-state-manager.encryption-secret=client-secret-lions-2025-encryption-key-min-16-chars
```

Cette clé fait **48 caractères** et est suffisante pour le développement.

## 🔒 Pour la production

En production, utilisez une clé générée de manière sécurisée :

```bash
# Générer une clé aléatoire de 32 caractères
openssl rand -base64 32
```

Ou utilisez un outil en ligne pour générer une clé aléatoire.

## 📝 Notes importantes

1. **Le secret de chiffrement n'est PAS le Client Secret de Keycloak**
2. **C'est une clé que vous générez vous-même** pour chiffrer les cookies
3. **Elle doit être la même** pour tous les nœuds d'un cluster (en production)
4. **Ne la commitez PAS** dans le dépôt Git si elle contient des informations sensibles

## 🎯 Configuration actuelle

- **Client Secret Keycloak** : `NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO` (dans `application-dev.properties`)
- **Encryption Secret** : `client-secret-lions-2025-encryption-key-min-16-chars` (ajouté)

Ces deux valeurs sont **différentes** et servent à des **usages différents**.

