Auth0 Management API : automatiser la gestion des utilisateurs et connexions
L'API de management Auth0 permet d'automatiser la création d'utilisateurs, la gestion des rôles, l'export des logs et la configuration des connexions. Guide pratique avec exemples.
Par Auth0.Expert · 2025-03-15 · 11 min de lecture
Auth0 Management API : guide d'automatisation
TL;DR
La Management API v2 d'Auth0 permet d'automatiser tout ce que vous faites dans le dashboard : créer des utilisateurs, assigner des rôles, exporter des logs, gérer les connexions. Indispensable pour les migrations et les workflows de provisioning.
---
Obtenir un token Management API
Ce code permet d’obtenir un jeton d’accès OAuth 2.0 en utilisant le flux machine-to-machine, indispensable pour s’authentifier auprès de la Management API d’Auth0.
# 1. Créer une Machine-to-Machine app dans Auth0
# 2. Autoriser cette app à accéder à l'API "Auth0 Management API"
# 3. Sélectionner les scopes nécessaires
curl -X POST https://YOUR_DOMAIN.auth0.com/oauth/token -H "Content-Type: application/json" -d '{
"client_id": "MGMT_CLIENT_ID",
"client_secret": "MGMT_CLIENT_SECRET",
"audience": "https://YOUR_DOMAIN.auth0.com/api/v2/",
"grant_type": "client_credentials"
}'
---
Gestion des utilisateurs
Cette section détaille comment automatiser la gestion des utilisateurs dans Auth0 via API.
Créer un utilisateur
Cette requête crée un nouvel utilisateur dans la connexion de base de données Auth0 avec des métadonnées personnalisées.
curl -X POST "https://YOUR_DOMAIN.auth0.com/api/v2/users" -H "Authorization: Bearer $MGMT_TOKEN" -H "Content-Type: application/json" -d '{
"connection": "Username-Password-Authentication",
"email": "[email protected]",
"password": "Secure$Password123!",
"given_name": "Jean",
"family_name": "Dupont",
"verify_email": true,
"app_metadata": {
"plan": "enterprise",
"tenant_id": "acme-corp"
}
}'
Rechercher des utilisateurs
Ce script Python asynchrone cherche des utilisateurs dans Auth0 en filtrant avec la syntaxe Lucene, très utile en migration ou pour l’audit.
import httpx
async def search_users(mgmt_token: str, domain: str, query: str) -> list:
"""Recherche avec la syntaxe Lucene."""
url = f"https://{domain}/api/v2/users"
params = {
"q": query, # ex: "email:*@example.com" ou "app_metadata.tenant_id:acme-corp"
"per_page": 100,
"page": 0,
"include_totals": True,
"fields": "user_id,email,name,app_metadata,created_at",
}
headers = {"Authorization": f"Bearer {mgmt_token}"}
async with httpx.AsyncClient() as client:
resp = await client.get(url, params=params, headers=headers)
return resp.json()
Ce code récupère la liste des utilisateurs répondant à une requête avancée (filtres, champs, pagination).
Mettre à jour app_metadata (sans mot de passe)
Cette commande met à jour la app_metadata d’un utilisateur sans toucher à son mot de passe.
curl -X PATCH "https://YOUR_DOMAIN.auth0.com/api/v2/users/USER_ID" -H "Authorization: Bearer $MGMT_TOKEN" -H "Content-Type: application/json" -d '{"app_metadata": {"plan": "enterprise", "custom_data": {"key": "value"}}}'
---
Gestion des rôles
Cette section explique comment automatiser l’attribution de rôles et la récupération des rôles disponibles pour la gestion des droits des utilisateurs.
# Assigner un rôle à un utilisateur
async def assign_role(mgmt_token, domain, user_id, role_id):
url = f"https://{domain}/api/v2/users/{user_id}/roles"
await httpx.AsyncClient().post(
url,
headers={"Authorization": f"Bearer {mgmt_token}"},
json={"roles": [role_id]},
)
# Lister les rôles disponibles
async def list_roles(mgmt_token, domain):
url = f"https://{domain}/api/v2/roles"
resp = await httpx.AsyncClient().get(
url,
headers={"Authorization": f"Bearer {mgmt_token}"},
params={"per_page": 50},
)
return resp.json()
Ce code gère l’affectation d’un rôle à un utilisateur et la récupération de tous les rôles existants.
---
Export des logs
Ici, vous pouvez exporter l’historique des logs d’Auth0 pour audit ou analyse de sécurité, en batchant les résultats pour contourner le rate limit.
import asyncio
async def export_all_logs(mgmt_token: str, domain: str, from_date: str):
"""Exporte tous les logs depuis une date donnée."""
logs = []
checkpoint = None
async with httpx.AsyncClient() as client:
while True:
params = {
"per_page": 100,
"q": f"date:[{from_date} TO *]",
"sort": "date:1",
}
if checkpoint:
params["from"] = checkpoint
params["take"] = 100
resp = await client.get(
f"https://{domain}/api/v2/logs",
headers={"Authorization": f"Bearer {mgmt_token}"},
params=params,
)
batch = resp.json()
if not batch:
break
logs.extend(batch)
checkpoint = batch[-1]["_id"]
await asyncio.sleep(0.5) # Respecter le rate limit
return logs
Ce code exporte tous les logs Auth0 à partir d’une date précise, quel que soit le volume, tout en respectant les limitations d’API.
---
Scopes Management API utiles
Voici les permissions (scopes) à accorder à votre application pour automatiser la gestion des utilisateurs, rôles et logs.
| Scope | Action | |-------|--------| | read:users | Lire les profils utilisateurs | | update:users | Modifier profils et metadata | | create:users | Créer des utilisateurs | | read:logs | Accéder aux logs d'authentification | | read:roles | Lister les rôles | | update:roles | Assigner/retirer des rôles | | read:connections | Lister les connexions | | create:organizations | Créer des organizations |
---
Rate Limits à connaître
Auth0 impose des limitations pour protéger l’API : connaître les quotas évite les interruptions.
| Endpoint | Limite | Fenêtre | |----------|--------|---------| | GET /users | 20 req | Par seconde | | POST /users | 10 req | Par seconde | | PATCH /users | 20 req | Par seconde | | GET /logs | 5 req | Par seconde |
Gestion des 429 : Ce code montre comment automatiser la gestion des erreurs de limitation (HTTP 429) en réessayant après le délai imposé.
import time
async def api_call_with_retry(url, **kwargs):
for attempt in range(3):
resp = await httpx.AsyncClient().get(url, **kwargs)
if resp.status_code == 429:
retry_after = int(resp.headers.get("x-ratelimit-reset", 60))
await asyncio.sleep(retry_after - time.time() + 1)
continue
return resp
raise Exception("Rate limit persistant")
---
> ⚙️ Migration de masse d'utilisateurs ? Nous avons migré jusqu'à 50 millions d'utilisateurs via la Management API avec zéro perte de données.
📞 +33 1 23 45 67 89 · 📧 [email protected]
Autres articles
- Auth0 et OAuth 2.0 : architecture complète pour comprendre les flux d'autorisation
- OpenID Connect sur Auth0 : ID Token, UserInfo et discovery endpoint expliqués
- Configurer SAML 2.0 avec Auth0 : guide complet pour l'entreprise
- Migrer des Rules vers les Auth0 Actions : guide pas à pas
- Architecture multi-tenant avec Auth0 : organisations, isolation et bonnes pratiques
- Validation des JWT Auth0 : RS256 vs HS256, JWKS et pièges communs
- Concevoir son architecture de tenants Auth0 : dev, staging, prod
- Configurer un domaine personnalisé Auth0 : login.votredomaine.com étape par étape