This repository has been archived on 2026-01-03. You can view files and clone it, but cannot push or open issues or pull requests.
Files
lions-user-manager/KEYCLOAK_CLIENT_SETUP.md

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

  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 :

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

  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 :

# 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