Optimiser les coûts Auth0 : MAU, M2M tokens et plan selection
Auth0 peut devenir coûteux à grande échelle. Comment compter les MAU, optimiser les tokens M2M, et choisir le bon plan pour votre usage ?
Par Auth0.Expert · 2025-04-12 · 9 min de lecture
Optimiser les coûts Auth0
TL;DR
Auth0 facture principalement sur les MAU (Monthly Active Users) et les tokens M2M. Comprendre exactement ce qui est compté vous permet d'éviter les mauvaises surprises en fin de mois.
---
Qu'est-ce qu'un MAU ?
Un MAU (Monthly Active User) est un utilisateur unique qui s'est authentifié au moins une fois dans le mois calendaire en cours.
Ce qui compte :
- ✅ Login par email/mot de passe
- ✅ Login social (Google, GitHub...)
- ✅ Login SSO enterprise
- ✅ Refresh token utilisé (si
grant_type=refresh_token) - ✅ Silent authentication réussie
Ce qui ne compte PAS :
- ❌ Tentatives de login échouées
- ❌ Utilisateurs créés mais pas connectés
- ❌ Tokens M2M (pas de login utilisateur)
- ❌ Connexions via l'API Management
---
Calculer votre utilisation réelle
Pour suivre votre consommation Auth0 en temps réel, vous pouvez interroger l’API ou automatiser la collecte des données.
# Vérifier votre utilisation via l'API
curl "https://YOUR_DOMAIN.auth0.com/api/v2/stats/active-users" -H "Authorization: Bearer $MGMT_TOKEN"
# Réponse : nombre d'utilisateurs actifs ce mois
{"active_users": 4823}
Le script ci-dessous estime le coût mensuel Auth0 en extrayant le nombre de MAU et de tokens M2M consommés.
# Script pour estimer le coût mensuel
async def calculate_monthly_cost():
# MAU
mau_response = await auth0.get('/stats/active-users')
mau = mau_response['active_users']
# M2M tokens ce mois
m2m_logs = await auth0.get_logs(type='sce', page=0) # Client Credentials Exchange
m2m_count = m2m_logs.get('total', 0)
# Estimation selon le plan
print(f"MAU actuels: {mau}")
print(f"M2M tokens: {m2m_count}")
if mau <= 7500:
print("Plan Free : gratuit")
elif mau <= 10000:
print(f"Plan Essentials : ~$35/mois + overages")
else:
estimated_cost = 35 + max(0, (mau - 10000)) * 0.013
print(f"Coût estimé: ${estimated_cost:.2f}/mois")
Ce script récupère les données d'utilisation et affiche votre facturation potentielle en fonction du plan et du niveau d'utilisation.
---
Réduire les MAU : stratégies
Pour contrôler vos coûts Auth0, réduire le nombre de MAU facturés est une priorité.
1. Désactiver les utilisateurs inactifs
Le code suivant va rechercher les utilisateurs inactifs et les bloquer pour qu'ils ne comptent plus dans votre quota de MAU.
# Bloquer les utilisateurs inactifs depuis 90 jours
# (Comptes bloqués ne comptent pas comme MAU)
async def block_inactive_users(days: int = 90):
cutoff = (datetime.utcnow() - timedelta(days=days)).isoformat()
users = await auth0_search(f"last_login:[* TO {cutoff}]")
for user in users:
if user.get('app_metadata', {}).get('exempt_from_cleanup'):
continue
await auth0_block_user(user['user_id'])
return len(users)
Ce script automatise la désactivation des comptes inactifs et réduit ainsi la facturation inutile.
2. Optimiser les refresh tokens
Voici comment ajuster la configuration pour limiter la fréquence des refresh tokens et donc le comptage MAU associé.
// Chaque utilisation de refresh_token compte comme MAU
// Augmenter la durée de vie réduit le nombre d'utilisations
// Config app : access token 1h au lieu de 15min
// → 24 refresh/jour → 4 refresh/jour
// → Réduction de 83% des appels refresh token
{
"token_lifetime": 3600, // 1 heure (au lieu de 900s)
"refresh_token": {
"token_lifetime": 2592000 // 30 jours
}
}
3. Silent Auth vs Refresh Token
Pour les applications SPA, privilégiez l’authentification silencieuse, qui ne génère pas de nouveaux MAU si l’utilisateur a déjà été compté le même mois.
// Silent Auth (prompt=none) pour les SPAs : ne compte PAS comme MAU si déjà compté ce mois
// Privilégier silent auth sur refresh_token pour les SPAs
const token = await auth0.getTokenSilently();
// Auth0 utilise le cookie de session → pas de nouvelle requête /token
// → Pas de MAU supplémentaire
---
Optimiser les coûts M2M
La gestion efficace des tokens M2M aide à rester dans les quotas inclus et à éviter les frais additionnels.
# M2M tokens : quota mensuel selon le plan
# Free/Developer : 1000 tokens/mois
# Après : $0.50 pour 1000 tokens supplémentaires
# Stratégie : mettre en cache les tokens M2M
class M2MTokenManager:
_cache = {}
@classmethod
async def get_token(cls, client_id: str, audience: str) -> str:
cache_key = f"{client_id}:{audience}"
cached = cls._cache.get(cache_key, {})
# Réutiliser si valide encore > 5 minutes
if cached.get('expires_at', 0) > time.time() + 300:
return cached['token']
# Sinon, obtenir un nouveau token
token_data = await fetch_new_m2m_token(client_id, audience)
cls._cache[cache_key] = {
'token': token_data['access_token'],
'expires_at': time.time() + token_data['expires_in'],
}
return token_data['access_token']
Cette classe met en cache les tokens M2M pour limiter les appels à Auth0 et contenir les coûts.
---
Comparaison des plans 2025
Le tableau ci-dessous résume les quotas, tarifs et fonctionnalités des différents plans Auth0, pour vous aider à choisir la meilleure option selon votre usage.
| Plan | MAU inclus | M2M tokens | Features | Prix | |------|-----------|-----------|---------|------| | Free | 7 500 | 1 000 | Basique | $0 | | Essentials | 10 000 | 1 000 | + Custom Domains | $35/m | | Professional | 10 000 | 5 000 | + Organizations | $240/m | | Enterprise | Négocié | Illimité | SLA + Support | Sur devis |
---
Alertes de dépassement
Ce code permet de surveiller quotidiennement l’utilisation et d’être alerté avant de dépasser votre quota de MAU sur Auth0.
# Vérifier quotidiennement si on approche du quota
async def check_quota_alerts():
mau = (await auth0.get('/stats/active-users'))['active_users']
limit = int(os.environ.get('AUTH0_MAU_LIMIT', 7500))
usage_pct = mau / limit * 100
if usage_pct > 90:
await send_alert(f"Auth0 MAU critique: {mau}/{limit} ({usage_pct:.1f}%)")
elif usage_pct > 75:
await send_alert(f"Auth0 MAU élevé: {mau}/{limit} ({usage_pct:.1f}%)")
Ce script automatise l’envoi d’alertes si votre consommation dépasse certains seuils, pour anticiper tout surcoût.
---
> 💰 Audit des coûts Auth0 : nous analysons votre utilisation Auth0 et identifions des économies concrètes (en général 20-40% de réduction).
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