Migration complète vers PrimeFaces Freya - Corrections des incompatibilités et intégration de primefaces-freya-extension
This commit is contained in:
203
KEYCLOAK_CLIENT_SETUP.md
Normal file
203
KEYCLOAK_CLIENT_SETUP.md
Normal 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
|
||||
Reference in New Issue
Block a user