6.7 KiB
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-clisur le realmlions-user-manager
Étapes de configuration dans Keycloak (http://localhost:8180)
1. Créer le realm lions-user-manager
- Connectez-vous à Keycloak : http://localhost:8180
- Cliquez sur le dropdown en haut à gauche (actuellement sur "Master")
- Cliquez sur "Create Realm"
- Nom du realm :
lions-user-manager - Enabled :
ON - Cliquez sur "Create"
2. Créer le client backend lions-user-manager-backend
- Dans le realm
lions-user-manager, allez dans Clients → Create client - Client ID :
lions-user-manager-backend - Client Protocol :
openid-connect - Cliquez sur "Next"
- Client authentication :
ON(pour avoir un client confidentiel) - Authorization :
OFF - Standard flow :
ON - Direct access grants :
ON - Service accounts roles :
ON - Cliquez sur "Next" puis "Save"
- Allez dans l'onglet "Credentials"
- Copiez le Client secret :
NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO- Si le secret est différent, régénérez-le ou mettez à jour
application.properties
- Si le secret est différent, régénérez-le ou mettez à jour
3. Créer le client frontend lions-user-manager-client
- Dans le realm
lions-user-manager, allez dans Clients → Create client - Client ID :
lions-user-manager-client - Client Protocol :
openid-connect - Cliquez sur "Next"
- Client authentication :
ON - Authorization :
OFF - Standard flow :
ON - Direct access grants :
ON - Cliquez sur "Next"
- Valid redirect URIs :
http://localhost:8082/*http://localhost:8082/auth/callback
- Valid post logout redirect URIs :
http://localhost:8082/* - Web origins :
http://localhost:8082 - Cliquez sur "Save"
- Allez dans l'onglet "Credentials"
- Vérifiez que le Client secret est :
NTuaQpk5E6qiMqAWTFrCOcIkOABzZzKO
4. Créer les rôles
- Dans le realm
lions-user-manager, allez dans Realm roles - Cliquez sur "Create role"
- 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
- Dans le realm
lions-user-manager, allez dans Users → Add user - Username :
testadmin - Email :
admin@test.local - First name :
Test - Last name :
Admin - Email verified :
ON - Enabled :
ON - Cliquez sur "Create"
- Allez dans l'onglet "Credentials"
- Cliquez sur "Set password"
- Password :
admin123 - Temporary :
OFF
- Password :
- Allez dans l'onglet "Role mapping"
- Cliquez sur "Assign role"
- Sélectionnez les rôles :
adminetuser_manager - Cliquez sur "Assign"
6. Configurer le scope "roles"
- Dans le realm
lions-user-manager, allez dans Client scopes - Trouvez ou créez le scope "roles"
- Vérifiez qu'il est assigné au client
lions-user-manager-client - Dans le scope "roles", allez dans "Mappers"
- 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
- Name :
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
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-manageraux realms autorisés en dev
- Ajout de la configuration dev pour OIDC pointant vers
Prochaines étapes
- Configurez Keycloak selon les étapes ci-dessus
- Redémarrez le serveur backend :
mvn quarkus:dev - Redémarrez le client frontend :
mvn quarkus:dev - Connectez-vous avec
testadmin/admin123 - Accédez à
/pages/user-manager/users/list.xhtml - L'erreur HTTP 405 devrait disparaître ✅