Migration complète vers PrimeFaces Freya - Corrections des incompatibilités et intégration de primefaces-freya-extension

This commit is contained in:
lionsdev
2025-12-27 00:18:31 +00:00
parent 5e272a8256
commit 5c996931a6
206 changed files with 36646 additions and 1593 deletions

202
KEYCLOAK_DEV_SETUP.md Normal file
View File

@@ -0,0 +1,202 @@
# Configuration Keycloak pour lions-user-manager (Mode DEV)
## Problème résolu
**Erreur HTTP 405 sur `/api/users/search`** : Cette erreur se produisait car le client et le serveur utilisaient des realms Keycloak différents. Les tokens générés pour un realm ne sont pas valides pour un autre realm.
## Configuration corrigée
### Client (lions-user-manager-client-quarkus-primefaces-freya)
- **Realm** : `lions-user-manager`
- **Auth Server** : `http://localhost:8180/realms/lions-user-manager`
- **Client ID** : `lions-user-manager-client`
- **Secret** : `NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO`
### Serveur (lions-user-manager-server-impl-quarkus) - Mode DEV
- **Realm** : `lions-user-manager`
- **Auth Server** : `http://localhost:8180/realms/lions-user-manager`
- **Client ID** : `lions-user-manager-backend`
- **Secret** : `NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO`
- **Admin Client** : `admin-cli` sur le realm `lions-user-manager`
---
## Étapes de configuration dans Keycloak (http://localhost:8180)
### 1. Créer le realm `lions-user-manager`
1. Connectez-vous à Keycloak : http://localhost:8180
2. Cliquez sur le dropdown en haut à gauche (actuellement sur "Master")
3. Cliquez sur **"Create Realm"**
4. Nom du realm : `lions-user-manager`
5. **Enabled** : `ON`
6. Cliquez sur **"Create"**
### 2. Créer le client backend `lions-user-manager-backend`
1. Dans le realm `lions-user-manager`, allez dans **Clients****Create client**
2. **Client ID** : `lions-user-manager-backend`
3. **Client Protocol** : `openid-connect`
4. Cliquez sur **"Next"**
5. **Client authentication** : `ON` (pour avoir un client confidentiel)
6. **Authorization** : `OFF`
7. **Standard flow** : `ON`
8. **Direct access grants** : `ON`
9. **Service accounts roles** : `ON`
10. Cliquez sur **"Next"** puis **"Save"**
11. Allez dans l'onglet **"Credentials"**
12. Copiez le **Client secret** : `NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO`
- Si le secret est différent, régénérez-le ou mettez à jour `application.properties`
### 3. Créer le client frontend `lions-user-manager-client`
1. Dans le realm `lions-user-manager`, allez dans **Clients****Create client**
2. **Client ID** : `lions-user-manager-client`
3. **Client Protocol** : `openid-connect`
4. Cliquez sur **"Next"**
5. **Client authentication** : `ON`
6. **Authorization** : `OFF`
7. **Standard flow** : `ON`
8. **Direct access grants** : `ON`
9. Cliquez sur **"Next"**
10. **Valid redirect URIs** :
- `http://localhost:8082/*`
- `http://localhost:8082/auth/callback`
11. **Valid post logout redirect URIs** : `http://localhost:8082/*`
12. **Web origins** : `http://localhost:8082`
13. Cliquez sur **"Save"**
14. Allez dans l'onglet **"Credentials"**
15. Vérifiez que le **Client secret** est : `NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO`
### 4. Créer les rôles
1. Dans le realm `lions-user-manager`, allez dans **Realm roles**
2. Cliquez sur **"Create role"**
3. Créez les rôles suivants :
- **admin** : Administrateur système
- **user_manager** : Gestionnaire d'utilisateurs
- **user_viewer** : Consultation uniquement
### 5. Créer un utilisateur de test
1. Dans le realm `lions-user-manager`, allez dans **Users****Add user**
2. **Username** : `testadmin`
3. **Email** : `admin@test.local`
4. **First name** : `Test`
5. **Last name** : `Admin`
6. **Email verified** : `ON`
7. **Enabled** : `ON`
8. Cliquez sur **"Create"**
9. Allez dans l'onglet **"Credentials"**
10. Cliquez sur **"Set password"**
- Password : `admin123`
- Temporary : `OFF`
11. Allez dans l'onglet **"Role mapping"**
12. Cliquez sur **"Assign role"**
13. Sélectionnez les rôles : `admin` et `user_manager`
14. Cliquez sur **"Assign"**
### 6. Configurer le scope "roles"
1. Dans le realm `lions-user-manager`, allez dans **Client scopes**
2. Trouvez ou créez le scope **"roles"**
3. Vérifiez qu'il est assigné au client `lions-user-manager-client`
4. Dans le scope "roles", allez dans **"Mappers"**
5. Vérifiez qu'il y a un mapper pour `realm roles` :
- **Name** : `realm roles`
- **Mapper Type** : `User Realm Role`
- **Token Claim Name** : `realm_access.roles`
- **Claim JSON Type** : `String`
- **Add to ID token** : `ON`
- **Add to access token** : `ON`
- **Add to userinfo** : `ON`
---
## Vérification de la configuration
### 1. Tester l'authentification client
```bash
curl -X POST "http://localhost:8180/realms/lions-user-manager/protocol/openid-connect/token" \
-H "Content-Type: application/x-www-form-urlencoded" \
-d "client_id=lions-user-manager-client" \
-d "client_secret=NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO" \
-d "grant_type=password" \
-d "username=testadmin" \
-d "password=admin123" \
-d "scope=openid profile email roles"
```
Vous devriez recevoir un **access_token** et un **id_token**.
### 2. Vérifier le token
Copiez l'`access_token` et décodez-le sur https://jwt.io
Vérifiez que le token contient :
- `"iss": "http://localhost:8180/realms/lions-user-manager"`
- `"azp": "lions-user-manager-client"`
- `"realm_access": { "roles": ["admin", "user_manager", ...] }`
### 3. Tester l'API backend
Avec le token obtenu, testez l'endpoint :
```bash
curl -X POST "http://localhost:8081/api/users/search" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_ACCESS_TOKEN" \
-d '{
"realmName": "lions-user-manager",
"page": 0,
"pageSize": 20
}'
```
Si tout est correct, vous devriez recevoir une réponse 200 avec la liste des utilisateurs.
---
## Logs utiles pour le debugging
### Serveur (lions-user-manager-server)
```bash
cd lions-user-manager/lions-user-manager-server-impl-quarkus
mvn quarkus:dev
```
Recherchez dans les logs :
- `Token Bearer ajouté au header Authorization` (client)
- `POST /api/users/search - Recherche d'utilisateurs` (serveur)
- Erreurs d'authentification OIDC
### Client (lions-user-manager-client)
```bash
cd lions-user-manager/lions-user-manager-client-quarkus-primefaces-freya
mvn quarkus:dev
```
Recherchez dans les logs :
- `Token JWT non disponible` (problème de connexion)
- `Erreur lors de la recherche` (problème d'API)
---
## Résumé des modifications effectuées
### Fichiers modifiés
1. **`lions-user-manager-server-impl-quarkus/src/main/resources/application.properties`**
- Ajout de la configuration dev pour OIDC pointant vers `http://localhost:8180/realms/lions-user-manager`
- Ajout de la configuration dev pour Keycloak Admin Client
- Ajout du realm `lions-user-manager` aux realms autorisés en dev
### Prochaines étapes
1. Configurez Keycloak selon les étapes ci-dessus
2. Redémarrez le serveur backend : `mvn quarkus:dev`
3. Redémarrez le client frontend : `mvn quarkus:dev`
4. Connectez-vous avec `testadmin` / `admin123`
5. Accédez à `/pages/user-manager/users/list.xhtml`
6. L'erreur HTTP 405 devrait disparaître ✅