Saltar al contenido principal
Al usar Múltiples dominios personalizados con la extensión Delegated Administration, Custom Domain Hook le permite especificar qué dominio personalizado se debe usar para operaciones de usuario, como crear usuarios, restablecer contraseñas, verificar direcciones de correo electrónico y bloquear usuarios.

Contrato del Hook

  • ctx: Objeto de contexto que contiene información sobre la solicitud actual.
    • method: La operación que se está realizando (p. ej., create, reset_password, verify_email, block_user).
    • payload: Datos relacionados con la operación (para el método create, contiene información del usuario, como el correo electrónico).
    • request: Contiene información sobre la solicitud.
      • originalUser: El usuario sobre el que se realiza la operación (para métodos distintos de create).
  • callback(error, result): Función callback para devolver la configuración del dominio personalizado.
    • error: Objeto de error si algo salió mal; en caso contrario, null.
    • result: Objeto que especifica el comportamiento del dominio personalizado:
      • customDomain (string): El dominio personalizado que se debe usar (p. ej., 'customone.example.com').
      • useCanonicalDomain (boolean): Establézcalo en true para usar el dominio canónico del Tenant en lugar de un dominio personalizado.
      • Devuelva un objeto vacío {} para delegar en el dominio predeterminado del Tenant.

Métodos compatibles

El Custom Domain Hook se invoca para las siguientes operaciones de usuario:
  • create: Al crear un nuevo usuario
  • reset_password: Al enviar un correo electrónico de restablecimiento de contraseña
  • verify_email: Al enviar un enlace de verificación de correo electrónico
  • block_user: Al bloquear a un usuario

Ejemplo de uso

En este ejemplo, los usuarios de distintos dominios de correo electrónico se dirigen a diferentes dominios personalizados. Los usuarios de un dominio corporativo usan el dominio canónico del Tenant, mientras que todos los demás usan el dominio predeterminado del Tenant.
function(ctx, callback) {
  // Mapear dominios de correo electrónico a dominios personalizados
  const emailToDomain = {
    'customone.com': 'customone.example.com',
    'customtwo.com': 'customtwo.example.com',
  };

  // Función auxiliar para extraer el dominio personalizado del correo electrónico
  function getDomainFromEmail(userEmail) {
    if (!userEmail) return null;
    const domain = userEmail.split('@')[1];
    return emailToDomain[domain];
  }

  // Función auxiliar para determinar si se debe usar el dominio canónico
  function shouldUseCanonical(userEmail) {
    if (!userEmail) return false;
    const domain = userEmail.split('@')[1];
    return domain === 'corp.com';
  }

  // Obtener el correo electrónico del usuario según la operación
  let userEmail;
  if (ctx.method === 'create') {
    // Para operaciones de creación, el correo electrónico está en la carga útil
    userEmail = ctx.payload.email;
  } else {
    // Para otras operaciones, obtener el correo electrónico del usuario original
    userEmail = ctx.request.originalUser.email;
  }

  const customDomain = getDomainFromEmail(userEmail);

  // Opción 1: Usar un dominio personalizado específico
  if (customDomain) {
    return callback(null, {
      customDomain: customDomain
    });
  }

  // Opción 2: Usar el dominio canónico del Tenant
  if (shouldUseCanonical(userEmail)) {
    return callback(null, {
      useCanonicalDomain: true
    });
  }

  // Opción 3: Usar el dominio predeterminado del Tenant (si está configurado)
  // Devolver objeto vacío para delegar al dominio predeterminado
  return callback(null, {});
}

Notas

  • Si este hook no está configurado, la extensión Delegated Administration usará el dominio personalizado predeterminado del Tenant si hay uno configurado; de lo contrario, usará el dominio canónico.
  • El dominio personalizado devuelto debe ser un dominio personalizado verificado y configurado en tu Tenant. Si especificas un dominio no válido o no verificado, la operación fallará.
  • Al usar useCanonicalDomain: true, los correos electrónicos y los enlaces usarán el dominio canónico de tu Tenant de Auth0 (por ejemplo, YOUR_TENANT.auth0.com o YOUR_TENANT.REGION.auth0.com).
  • Devolver un objeto vacío {} delega la selección del dominio en la configuración del dominio personalizado predeterminado del Tenant.

Más información