Passer au contenu principal
Lorsque vous utilisez Domaines personnalisés multiples avec l’extension Delegated Administration, le Hook de domaine personnalisé vous permet d’indiquer quel domaine personnalisé utiliser pour les opérations sur les utilisateurs, comme la création d’utilisateurs, la réinitialisation de mots de passe, la vérification des courriels et le blocage des utilisateurs.

Contrat du hook

  • ctx : Objet de contexte contenant des renseignements sur la requête en cours.
    • method : Opération en cours d’exécution (p. ex., create, reset_password, verify_email, block_user).
    • payload : Données liées à l’opération (pour la méthode create, contient des renseignements sur l’utilisateur, comme le courriel).
    • request : Contient des renseignements sur la requête.
      • originalUser : Utilisateur sur lequel l’opération est effectuée (pour les méthodes autres que create).
  • callback(error, result) : Fonction de rappel utilisée pour renvoyer la configuration du domaine personnalisé.
    • error : Objet d’erreur en cas de problème; sinon, null.
    • result : Objet qui définit le comportement du domaine personnalisé :
      • customDomain (string) : Domaine personnalisé à utiliser (p. ex., 'customone.example.com').
      • useCanonicalDomain (boolean) : Définissez cette valeur à true pour utiliser le domaine canonique du locataire au lieu d’un domaine personnalisé.
      • Retournez un objet vide {} pour déléguer au domaine par défaut du locataire.

Méthodes prises en charge

Le hook de domaine personnalisé est invoqué pour les opérations suivantes liées aux utilisateurs :
  • create: Lors de la création d’un nouvel utilisateur
  • reset_password: Lors de l’envoi d’un courriel de réinitialisation du mot de passe
  • verify_email: Lors de l’envoi d’un lien de vérification du courriel
  • block_user: Lors du blocage d’un utilisateur

Exemple d’utilisation

Dans cet exemple, les utilisateurs ayant des domaines de courriel différents sont acheminés vers des domaines personnalisés différents. Les utilisateurs ayant un domaine d’entreprise utilisent le domaine canonique du locataire, tandis que tous les autres utilisent le domaine par défaut du locataire.
function(ctx, callback) {
  // Associer les domaines de courriel aux domaines personnalisés
  const emailToDomain = {
    'customone.com': 'customone.example.com',
    'customtwo.com': 'customtwo.example.com',
  };

  // Fonction utilitaire pour extraire le domaine personnalisé du courriel
  function getDomainFromEmail(userEmail) {
    if (!userEmail) return null;
    const domain = userEmail.split('@')[1];
    return emailToDomain[domain];
  }

  // Fonction utilitaire pour déterminer si le domaine canonique doit être utilisé
  function shouldUseCanonical(userEmail) {
    if (!userEmail) return false;
    const domain = userEmail.split('@')[1];
    return domain === 'corp.com';
  }

  // Obtenir le courriel de l'utilisateur selon l'opération
  let userEmail;
  if (ctx.method === 'create') {
    // Pour les opérations de création, le courriel se trouve dans la charge utile
    userEmail = ctx.payload.email;
  } else {
    // Pour les autres opérations, récupérer le courriel de l'utilisateur d'origine
    userEmail = ctx.request.originalUser.email;
  }

  const customDomain = getDomainFromEmail(userEmail);

  // Option 1 : Utiliser un domaine personnalisé spécifique
  if (customDomain) {
    return callback(null, {
      customDomain: customDomain
    });
  }

  // Option 2 : Utiliser le domaine canonique du locataire
  if (shouldUseCanonical(userEmail)) {
    return callback(null, {
      useCanonicalDomain: true
    });
  }

  // Option 3 : Utiliser le domaine par défaut du locataire (si configuré)
  // Retourner un objet vide pour déléguer au domaine par défaut
  return callback(null, {});
}

Remarques

  • Si ce hook n’est pas configuré, l’extension Delegated Administration utilisera le domaine personnalisé par défaut du locataire, s’il y en a un de configuré; sinon, elle utilisera le domaine canonique.
  • Le domaine personnalisé renvoyé doit être un domaine personnalisé vérifié configuré dans votre locataire. Si vous indiquez un domaine invalide ou non vérifié, l’opération échouera.
  • Lorsque vous utilisez useCanonicalDomain: true, les courriels et les liens utiliseront le domaine canonique de votre locataire Auth0 (par exemple, YOUR_TENANT.auth0.com ou YOUR_TENANT.REGION.auth0.com).
  • Retourner un objet vide {} délègue la sélection du domaine à la configuration du domaine personnalisé par défaut du locataire.

En savoir plus