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

203
KEYCLOAK_CLIENT_SETUP.md Normal file
View File

@@ -0,0 +1,203 @@
# Configuration du Client Keycloak - Lions User Manager
## Problème Identifié
Le client JSF est en **boucle d'authentification infinie** :
```
Starting an authentication challenge for tenant Default
```
**Cause** : Le client `lions-user-manager-client` n'existe pas ou est mal configuré dans Keycloak.
---
## Solution : Créer le Client dans Keycloak
### Étape 1 : Accéder à la Console Admin Keycloak
1. Ouvrir : http://localhost:8180
2. Cliquer sur **Administration Console**
3. Se connecter avec :
- **Username** : `admin`
- **Password** : `admin`
### Étape 2 : Sélectionner le Realm
1. Dans le menu déroulant en haut à gauche, sélectionner : **lions-user-manager**
2. Si le realm n'existe pas, le créer :
- Cliquer sur le menu déroulant
- **Create Realm**
- **Realm name** : `lions-user-manager`
- **Save**
### Étape 3 : Créer le Client
1. Dans le menu de gauche, aller à **Clients**
2. Cliquer sur **Create client**
#### General Settings
- **Client type** : OpenID Connect
- **Client ID** : `lions-user-manager-client`
- Cliquer sur **Next**
#### Capability config
- **Client authentication** : **ON** (cocher)
- **Authorization** : OFF
- **Authentication flow** :
-**Standard flow** (Authorization Code Flow)
-**Direct access grants** (Resource Owner Password Credentials)
- ❌ Implicit flow
- ❌ Service accounts roles
- Cliquer sur **Next**
#### Login settings
- **Root URL** : `http://localhost:8082`
- **Home URL** : `http://localhost:8082`
- **Valid redirect URIs** :
```
http://localhost:8082/*
http://localhost:8082/auth/callback
```
- **Valid post logout redirect URIs** :
```
http://localhost:8082/*
```
- **Web origins** :
```
http://localhost:8082
```
- Cliquer sur **Save**
### Étape 4 : Récupérer le Client Secret
1. Aller dans l'onglet **Credentials**
2. Copier le **Client secret** affiché
3. **Important** : Vérifier que ce secret correspond à celui dans `application-dev.properties`
---
## Vérification de la Configuration Client
### Fichier : `application-dev.properties`
Vérifier que ces valeurs correspondent à la configuration Keycloak :
```properties
quarkus.oidc.auth-server-url=http://localhost:8180/realms/lions-user-manager
quarkus.oidc.client-id=lions-user-manager-client
quarkus.oidc.credentials.secret=VOTRE_CLIENT_SECRET_ICI
quarkus.oidc.token.issuer=http://localhost:8180/realms/lions-user-manager
```
**⚠️ IMPORTANT** : Remplacer `VOTRE_CLIENT_SECRET_ICI` par le secret obtenu à l'Étape 4.
---
## Configuration Avancée du Client (Optionnel mais Recommandé)
### Onglet Settings
#### Access settings
- **Access Type** : Confidential (automatique avec Client authentication ON)
- **Standard Flow Enabled** : ON
- **Direct Access Grants Enabled** : ON
- **Implicit Flow Enabled** : OFF
- **Service Accounts Enabled** : OFF
#### Authentication flow overrides
- **Browser Flow** : browser (défaut)
- **Direct Grant Flow** : direct grant (défaut)
### Onglet Advanced
#### Advanced Settings
- **Access Token Lifespan** : 5 Minutes (défaut, peut être augmenté en dev)
- **Client Session Idle** : 30 Minutes
- **Client Session Max** : 10 Hours
- **PKCE Code Challenge Method** : S256 (recommandé)
---
## Test de la Configuration
### Test 1 : Vérifier que Keycloak accepte le client
```bash
curl -X POST "http://localhost:8180/realms/lions-user-manager/protocol/openid-connect/token" \
-d "client_id=lions-user-manager-client" \
-d "client_secret=VOTRE_SECRET" \
-d "grant_type=password" \
-d "username=admin" \
-d "password=admin"
```
**Résultat attendu** : Un JSON avec `access_token`, `refresh_token`, etc.
**Si erreur `invalid_client`** : Le client n'existe pas ou le secret est incorrect.
### Test 2 : Tester l'authentification via le navigateur
1. Arrêter le client JSF (Ctrl+C)
2. Supprimer les cookies du navigateur pour `localhost:8082`
3. Redémarrer le client : `mvn quarkus:dev`
4. Accéder à : http://localhost:8082/pages/user-manager/users/list.xhtml
5. **Résultat attendu** : Redirection vers Keycloak pour login
---
## Checklist de Vérification
- [ ] Realm `lions-user-manager` existe dans Keycloak
- [ ] Client `lions-user-manager-client` existe dans le realm
- [ ] Client authentication est **ON**
- [ ] Standard flow est **enabled**
- [ ] Valid redirect URIs contient `http://localhost:8082/*`
- [ ] Client secret dans `application-dev.properties` correspond au secret Keycloak
- [ ] Keycloak est accessible sur http://localhost:8180
- [ ] Le client JSF redémarre après modification du secret
---
## Dépannage
### Problème : "invalid_client"
- **Cause** : Client ID ou secret incorrect
- **Solution** : Vérifier que le client existe et que le secret correspond
### Problème : "invalid_redirect_uri"
- **Cause** : L'URL de redirection n'est pas dans la liste des Valid redirect URIs
- **Solution** : Ajouter `http://localhost:8082/*` dans les Valid redirect URIs
### Problème : Boucle infinie d'authentification
- **Cause** : Le client ne peut pas échanger le code d'autorisation contre un token
- **Solution** :
1. Vérifier que Standard Flow est enabled
2. Vérifier le client secret
3. Vérifier les redirect URIs
4. Supprimer les cookies du navigateur
### Problème : "unauthorized_client"
- **Cause** : Le flow d'authentification n'est pas autorisé
- **Solution** : Activer "Standard flow" dans la configuration du client
---
## Redémarrage après Configuration
Après avoir créé/modifié le client dans Keycloak :
```bash
# Arrêter le client JSF (Ctrl+C dans le terminal)
# Redémarrer
cd lions-user-manager/lions-user-manager-client-quarkus-primefaces-freya
mvn quarkus:dev
```
---
**Date** : 2025-12-25
**Statut** : Configuration requise avant utilisation