5.7 KiB
5.7 KiB
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
- Ouvrir : http://localhost:8180
- Cliquer sur Administration Console
- Se connecter avec :
- Username :
admin - Password :
admin
- Username :
Étape 2 : Sélectionner le Realm
- Dans le menu déroulant en haut à gauche, sélectionner : lions-user-manager
- 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
- Dans le menu de gauche, aller à Clients
- 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
- Aller dans l'onglet Credentials
- Copier le Client secret affiché
- 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 :
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
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
- Arrêter le client JSF (Ctrl+C)
- Supprimer les cookies du navigateur pour
localhost:8082 - Redémarrer le client :
mvn quarkus:dev - Accéder à : http://localhost:8082/pages/user-manager/users/list.xhtml
- Résultat attendu : Redirection vers Keycloak pour login
Checklist de Vérification
- Realm
lions-user-managerexiste dans Keycloak - Client
lions-user-manager-clientexiste dans le realm - Client authentication est ON
- Standard flow est enabled
- Valid redirect URIs contient
http://localhost:8082/* - Client secret dans
application-dev.propertiescorrespond 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 :
- Vérifier que Standard Flow est enabled
- Vérifier le client secret
- Vérifier les redirect URIs
- 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 :
# 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