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

Coûts MAU Optimisation

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 :

Ce qui ne compte PAS :

---

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).

📧 [email protected]


Autres articles