# Configuration Keycloak - Utilisateur de Test Ce document explique comment configurer un utilisateur de test dans Keycloak avec les rôles nécessaires pour utiliser `lions-user-manager`. ## Prérequis - Keycloak accessible sur `http://localhost:8180` - Accès admin : `admin` / `admin` - Realm `lions-user-manager` créé ## Étapes de Configuration ### 1. Créer l'utilisateur de test 1. Connectez-vous à Keycloak Admin Console : `http://localhost:8180` 2. Sélectionnez le realm `lions-user-manager` 3. Allez dans **Users** → **Add user** 4. Remplissez les informations : - **Username** : `test-user` (ou le nom de votre choix) - **Email** : `test@lions.dev` - **First name** : `Test` - **Last name** : `User` - **Email verified** : `ON` - **Enabled** : `ON` 5. Cliquez sur **Create** ### 2. Définir le mot de passe 1. Dans la page de l'utilisateur, allez dans l'onglet **Credentials** 2. Cliquez sur **Set password** 3. Définissez un mot de passe (ex: `test123`) 4. **Temporary** : `OFF` (pour éviter de changer le mot de passe à la première connexion) 5. Cliquez sur **Save** 6. Confirmez dans la popup ### 3. Créer les rôles Realm nécessaires Les rôles suivants doivent exister dans le realm `lions-user-manager` : #### Rôles requis pour les endpoints Users : - `admin` - Accès complet - `user_manager` - Gestion des utilisateurs - `user_viewer` - Consultation des utilisateurs #### Rôles requis pour les endpoints Roles : - `role_manager` - Gestion des rôles - `role_viewer` - Consultation des rôles #### Rôles requis pour les endpoints Audit : - `auditor` - Accès aux logs d'audit #### Rôles requis pour les endpoints Sync : - `sync_manager` - Gestion de la synchronisation **Création des rôles :** 1. Allez dans **Realm roles** → **Create role** 2. Créez chaque rôle un par un : - `admin` - `user_manager` - `user_viewer` - `role_manager` - `role_viewer` - `auditor` - `sync_manager` ### 4. Assigner les rôles à l'utilisateur 1. Retournez dans **Users** → Sélectionnez votre utilisateur de test 2. Allez dans l'onglet **Role mapping** 3. Cliquez sur **Assign role** 4. Sélectionnez **Filter by realm roles** 5. Cochez les rôles nécessaires : - Pour un accès complet : `admin` - Pour un accès limité : `user_manager`, `user_viewer`, `role_manager`, `role_viewer` 6. Cliquez sur **Assign** ### 5. Configurer le Client pour les rôles 1. Allez dans **Clients** → Sélectionnez `lions-user-manager-client` 2. Allez dans l'onglet **Mappers** 3. Vérifiez qu'il existe un mapper pour les rôles realm : - **Name** : `realm roles` - **Mapper Type** : `Realm Role` - **Token Claim Name** : `realm_access.roles` - **Add to access token** : `ON` - **Add to ID token** : `ON` - **Add to userinfo** : `ON` Si le mapper n'existe pas, créez-le : - Cliquez sur **Create** - **Name** : `realm roles` - **Mapper Type** : `Realm Role` - **Token Claim Name** : `realm_access.roles` - **Add to access token** : `ON` - **Add to ID token** : `ON` - **Add to userinfo** : `ON` - Cliquez sur **Save** ### 6. Vérifier la configuration 1. Connectez-vous au client avec l'utilisateur de test 2. Ouvrez les DevTools du navigateur (F12) 3. Allez dans **Application** → **Cookies** 4. Trouvez le cookie de session 5. Décodez le token JWT (utilisez https://jwt.io) 6. Vérifiez que le claim `realm_access.roles` contient les rôles assignés ## Configuration rapide via script Un script de configuration automatique sera créé prochainement. ## Rôles par endpoint ### `/api/users/*` - `admin` - Accès complet - `user_manager` - Création, modification, suppression - `user_viewer` - Consultation uniquement ### `/api/roles/*` - `admin` - Accès complet - `role_manager` - Création, modification, suppression - `role_viewer` - Consultation uniquement ### `/api/audit/*` - `admin` - Accès complet - `auditor` - Consultation des logs ### `/api/sync/*` - `admin` - Accès complet - `sync_manager` - Gestion de la synchronisation ## Notes importantes - Les rôles sont vérifiés côté backend via `@RolesAllowed` - Le token JWT doit contenir les rôles dans `realm_access.roles` - Le client propage automatiquement le token au backend via `bearer-token-propagation=true` - En production, utilisez des rôles plus granulaires selon les besoins