Auth0 MFA : configurer l'authentification multi-facteurs en production

TOTP, SMS, push, passkeys — configurer le MFA Auth0 de façon granulaire selon le risque utilisateur. Adaptive MFA, policies et gestion des exemptions.

Par Auth0.Expert · 2025-01-12 · 13 min de lecture

MFA Sécurité Auth0

Auth0 MFA : guide complet de configuration

TL;DR

Le MFA réduit le risque d'account takeover de 99,9% selon Microsoft. Auth0 supporte TOTP (Google Authenticator), SMS, push (Guardian), email OTP, WebAuthn et passkeys. Ce guide couvre la configuration et les politiques adaptatives.

---

Facteurs MFA disponibles

Un aperçu des principaux facteurs d'authentification multifacteur disponibles sur Auth0, leurs avantages et leurs cas d'usage recommandés.

| Facteur | Sécurité | UX | Recommandé pour | |---------|----------|-----|----------------| | WebAuthn/Passkeys | ⭐⭐⭐⭐⭐ | ⭐⭐⭐⭐⭐ | Tous les utilisateurs (2025+) | | TOTP (Authenticator) | ⭐⭐⭐⭐ | ⭐⭐⭐ | Tech-savvy, admins | | Auth0 Guardian (push) | ⭐⭐⭐⭐ | ⭐⭐⭐⭐ | Mobiles | | Email OTP | ⭐⭐⭐ | ⭐⭐⭐⭐ | Utilisateurs grand public | | SMS OTP | ⭐⭐ | ⭐⭐⭐⭐ | Uniquement si email impossible | | Recovery Codes | ⭐⭐ | ⭐ | Backup uniquement |

---

Configuration MFA dans Auth0

Voici comment activer et configurer plusieurs facteurs MFA à travers le dashboard Auth0, pour appliquer une politique cohérente.

{
  "policy": "all-applications",
  "factors": {
    "otp": {"enabled": true},
    "sms": {"enabled": true},
    "email": {"enabled": true},
    "push": {"enabled": true},
    "webauthn-roaming": {"enabled": true},
    "webauthn-platform": {"enabled": true},
    "recovery-code": {"enabled": true}
  }
}

Ce bloc configure tous les facteurs MFA souhaités dans Auth0 pour l'ensemble de vos applications.

---

MFA Adaptatif : déclencher selon le risque

L'approche adaptative MFA déclenche la vérification selon des critères de risque comme le rôle, le contexte, ou la localisation.

// Action Post Login : MFA conditionnel
exports.onExecutePostLogin = async (event, api) => {
  const {
    user,
    request,
    authentication,
    stats,
  } = event;

  // Toujours MFA pour les admins
  if (user.app_metadata?.role === 'admin') {
    api.multifactor.enable('any');
    return;
  }

  // MFA si changement de pays
  const lastCountry = user.app_metadata?.last_login_country;
  const currentCountry = request.geoip?.country_code;
  if (lastCountry && lastCountry !== currentCountry) {
    api.multifactor.enable('any', { allowRememberBrowser: false });
    return;
  }

  // MFA si nouvel appareil (IP jamais vue)
  if (stats.logins_count < 2) {
    api.multifactor.enable('any', { allowRememberBrowser: true });
    return;
  }

  // MFA si scope sensible demandé
  const requestedScopes = event.transaction?.requested_scopes || [];
  if (requestedScopes.includes('admin:write')) {
    api.multifactor.enable('any');
    return;
  }
};

Ce code déploie un MFA conditionnel sur Auth0 selon plusieurs scénarios de risque (rôle admin, changement de pays, première connexion ou action sensible).

---

Enrôlement MFA : forcer à la première connexion

Ce script oblige l'utilisateur à s'inscrire à un facteur MFA lors de sa première connexion si ce n'est pas déjà fait.

exports.onExecutePostLogin = async (event, api) => {
  // Si l'utilisateur n'a pas encore de facteur MFA
  if (!event.user.multifactor?.includes('google-authenticator') &&
      !event.user.multifactor?.includes('guardian')) {
    // Rediriger vers l'enrôlement
    api.multifactor.enable('any');
  }
};

Cette fonction garantit que chaque utilisateur configure une méthode MFA dès sa première authentification.

---

"Remember this browser" : durée configurable

Vous pouvez autoriser l'utilisateur à mémoriser un navigateur pour une durée personnalisée et ainsi réduire la friction.

api.multifactor.enable('any', {
  allowRememberBrowser: true,
  // Durée de mémorisation en secondes (30 jours)
  rememberBrowserLifetimeInSeconds: 30 * 24 * 3600,
});

---

WebAuthn / Passkeys : l'avenir du MFA

WebAuthn permet des expériences sans mot de passe robustes et résistantes au phishing, en forçant la méthode appropriée lors de l'authentification.

// Forcer WebAuthn spécifiquement
exports.onExecutePostLogin = async (event, api) => {
  if (event.user.app_metadata?.require_passkey) {
    api.multifactor.enable('webauthn-platform');
  }
};

Avantages des passkeys :

---

SMS MFA : risques et alternatives

Les SMS sont vulnérables aux attaques de type SIM Swapping ; privilégiez d'autres facteurs MFA pour les comptes à privilèges.

Si vous devez utiliser SMS, voici comment configurer le fournisseur :

// Configurer le provider SMS
{
  "provider": "twilio",
  "from": "+33123456789",
  "twilio_sid": "YOUR_SID",
  "twilio_token": "YOUR_TOKEN",
  "messaging_service_sid": "MG..."
}

---

Step-up Authentication : MFA ciblé

La step-up authentication permet d'exiger le MFA uniquement lors de certaines actions critiques, pas à chaque connexion.

// Côté API : vérifier le claim 'amr' (authentication methods references)
async function requireMFA(token: string) {
  const payload = await verifyToken(token);
  const amr = payload.amr || [];

  if (!amr.some(m => ['mfa', 'otp', 'swk', 'hwk'].includes(m))) {
    throw new Error('MFA requis pour cette action');
  }
}

// Côté client : redemander le MFA
const token = await getAccessTokenSilently({
  authorizationParams: {
    scope: 'openid email admin:write',
    acr_values: 'http://schemas.openid.net/pape/policies/2007/06/multi-factor',
  },
});

Ce code montre comment appliquer un contrôle MFA dynamique sur vos API en fonction de l'action demandée.

---

Gestion des exemptions MFA

Certains utilisateurs ou réseaux internes doivent pouvoir se connecter sans MFA. Voici un exemple d’exemption sur base d’adresse IP.

// Exempter certains IP internes
exports.onExecutePostLogin = async (event, api) => {
  const trustedIPs = ['192.168.1.0/24', '10.0.0.0/8'];
  const userIP = event.request.ip;

  if (isInRange(userIP, trustedIPs)) return; // Pas de MFA

  api.multifactor.enable('any');
};

Ce script permet d'exempter le MFA pour les utilisateurs se connectant depuis des réseaux internes spécifiés.

---

> 🛡️ Implémentation MFA enterprise : nous configurons votre politique MFA adaptative avec les bons facteurs selon votre secteur (RGPD, PCI-DSS, HDS) en 3 jours ouvrés.

📞 +33 1 23 45 67 89 · 📧 [email protected]


Autres articles