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_DEV_SETUP.md

6.7 KiB

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 ClientsCreate 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 ClientsCreate 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 UsersAdd 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

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 :

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)

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)

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