# Keycloak – lire les rôles et la config UnionFlow (curl) Base URL Keycloak : **http://localhost:8180** Identifiants admin : **username=admin**, **password=admin**. ## 1. Obtenir un token admin (realm master) ```bash curl -s -X POST "http://localhost:8180/realms/master/protocol/openid-connect/token" ^ -H "Content-Type: application/x-www-form-urlencoded" ^ -d "username=admin" ^ -d "password=admin" ^ -d "grant_type=password" ^ -d "client_id=admin-cli" ``` Sous Linux/macOS, remplacer `^` par `\`. Réponse attendue : JSON avec `access_token`, `expires_in`, etc. Copier la valeur de `access_token` pour les appels suivants (ou parser avec `jq` : `... | jq -r .access_token`). ## 2. Lister les rôles du realm **unionflow** Remplacez `ACCESS_TOKEN` par le token obtenu à l’étape 1. ```bash curl -s -H "Authorization: Bearer ACCESS_TOKEN" ^ "http://localhost:8180/admin/realms/unionflow/roles" ``` Rôles typiques côté UnionFlow : `ADMIN`, `ADMIN_ORGANISATION`, `MEMBRE`, `MODERATEUR`, etc. ## 3. Récupérer la configuration du realm **unionflow** ```bash curl -s -H "Authorization: Bearer ACCESS_TOKEN" ^ "http://localhost:8180/admin/realms/unionflow" ``` Contient la config générale du realm (nom, login, thème, tokens, etc.). ## 4. Rôles par client (ex. application UnionFlow) Si les rôles sont définis sur un client (client scope), lister les rôles du client : ```bash # Récupérer l’id du client (ex. unionflow-mobile ou account) curl -s -H "Authorization: Bearer ACCESS_TOKEN" ^ "http://localhost:8180/admin/realms/unionflow/clients?clientId=unionflow-mobile" # Puis lister les rôles du client (remplacer CLIENT_UUID par l’id du client) curl -s -H "Authorization: Bearer ACCESS_TOKEN" ^ "http://localhost:8180/admin/realms/unionflow/clients/CLIENT_UUID/roles" ``` ## 5. Exemple PowerShell (token + rôles en une fois) ```powershell $body = @{ username = 'admin' password = 'admin' grant_type = 'password' client_id = 'admin-cli' } $tokenResponse = Invoke-RestMethod -Uri 'http://localhost:8180/realms/master/protocol/openid-connect/token' -Method Post -Body $body -ContentType 'application/x-www-form-urlencoded' $token = $tokenResponse.access_token # Rôles du realm unionflow Invoke-RestMethod -Uri 'http://localhost:8180/admin/realms/unionflow/roles' -Headers @{ Authorization = "Bearer $token" } # Config du realm unionflow Invoke-RestMethod -Uri 'http://localhost:8180/admin/realms/unionflow' -Headers @{ Authorization = "Bearer $token" } ``` ## Note L’API Admin Keycloak (`/admin/realms/...`) exige un utilisateur du realm **master** (admin). Les rôles visibles dans le JWT des utilisateurs connectés à l’app (realm **unionflow**) viennent du realm **unionflow** (realm roles ou client roles selon la config).