78 lines
2.7 KiB
Markdown
78 lines
2.7 KiB
Markdown
# 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).
|