> ## Documentation Index
> Fetch the complete documentation index at: https://translations.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

> Découvrez comment passer d’un domaine personnalisé unique à plusieurs domaines personnalisés dans Auth0.

# Migrer vers plusieurs domaines personnalisés

export const AuthCodeGroup = ({children, dropdown}) => {
  const [processedChildren, setProcessedChildren] = useState(children);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      unsubscribe = window.autorun(() => {
        const processChildren = node => {
          if (typeof node === "string") {
            let processedNode = node;
            for (const [key, value] of window.rootStore.variableStore.values.entries()) {
              const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
              processedNode = processedNode.replaceAll(new RegExp(escapedKey, "g"), value);
            }
            return processedNode;
          } else if (Array.isArray(node)) {
            return node.map(processChildren);
          } else if (node && node.props && node.props.children) {
            return {
              ...node,
              props: {
                ...node.props,
                children: processChildren(node.props.children)
              }
            };
          }
          return node;
        };
        setProcessedChildren(processChildren(children));
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  return <CodeGroup dropdown={dropdown}>{processedChildren}</CodeGroup>;
};

export const AuthCodeBlock = ({filename, icon, language, highlight, children}) => {
  const [displayText, setDisplayText] = useState(children);
  const [copyText, setCopyText] = useState(children);
  const wrapperRef = React.useRef(null);
  useEffect(() => {
    let unsubscribe = null;
    function init() {
      if (!window.autorun || !window.rootStore) {
        return;
      }
      unsubscribe = window.autorun(() => {
        let processedChildrenForDisplay = children;
        let processedChildrenForCopy = children;
        for (const [key, value] of window.rootStore.variableStore.values.entries()) {
          const escapedKey = key.replaceAll(/[.*+?^${}()|[\]\\]/g, (String.raw)`\$&`);
          let displayValue = value;
          if (key === "{yourClientSecret}" && value !== "{yourClientSecret}") {
            displayValue = value.substring(0, 3) + "*****MASKED*****";
          }
          processedChildrenForDisplay = processedChildrenForDisplay.replaceAll(new RegExp(escapedKey, "g"), displayValue);
          processedChildrenForCopy = processedChildrenForCopy.replaceAll(new RegExp(escapedKey, "g"), value);
        }
        setDisplayText(processedChildrenForDisplay);
        setCopyText(processedChildrenForCopy);
      });
    }
    if (window.rootStore) {
      init();
    } else {
      window.addEventListener("adu:storeReady", init);
    }
    return () => {
      window.removeEventListener("adu:storeReady", init);
      unsubscribe?.();
    };
  }, [children]);
  useEffect(() => {
    if (!wrapperRef.current) return;
    const originalWriteText = navigator.clipboard.writeText.bind(navigator.clipboard);
    let isOverriding = false;
    const handleClick = e => {
      const button = e.target.closest('[data-testid="copy-code-button"]');
      if (!button || !wrapperRef.current.contains(button)) return;
      isOverriding = true;
      navigator.clipboard.writeText = text => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
          return originalWriteText(copyText);
        }
        return originalWriteText(text);
      };
      setTimeout(() => {
        if (isOverriding) {
          isOverriding = false;
          navigator.clipboard.writeText = originalWriteText;
        }
      }, 100);
    };
    const wrapper = wrapperRef.current;
    wrapper.addEventListener('click', handleClick, true);
    return () => {
      wrapper.removeEventListener('click', handleClick, true);
      if (navigator.clipboard.writeText !== originalWriteText) {
        navigator.clipboard.writeText = originalWriteText;
      }
    };
  }, [copyText]);
  return <div ref={wrapperRef}>
      <CodeBlock filename={filename} icon={icon} language={language} lines highlight={highlight}>
        {displayText}
      </CodeBlock>
    </div>;
};

Ce guide vous aide à passer d’une configuration avec un seul domaine personnalisé à [plusieurs domaines personnalisés](/fr-CA/docs/customize/custom-domains/multiple-custom-domains). Que vous ajoutiez des domaines pour différentes marques, régions ou segments de clientèle, ce guide fournit des instructions étape par étape pour assurer une transition harmonieuse.

<div id="migration-scenarios">
  ## Scénarios de migration
</div>

Choisissez le scénario qui correspond le mieux à votre situation :

| Scénario                                    | Description                                                                                                                                  | Cas d’utilisation                                                        | Complexité       | Temps d’arrêt                        |
| ------------------------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------ | ---------------- | ------------------------------------ |
| **Ajout de domaines supplémentaires**       | Vous avez actuellement un domaine personnalisé et vous voulez en ajouter d’autres tout en gardant le domaine existant opérationnel           | Expansion à plusieurs marques ou régions                                 | Faible           | Aucun                                |
| **Remplacement d’un domaine existant**      | Vous voulez remplacer votre domaine personnalisé actuel par un nouveau                                                                       | Changement d’image de marque ou de propriétaire du domaine               | Moyenne          | Minimal (pendant le basculement DNS) |
| **Migration à partir du domaine canonique** | Vous utilisez actuellement votre domaine canonique Auth0 (par ex., `tenant.auth0.com`) et vous voulez migrer vers des domaines personnalisés | Mise en place initiale de domaines personnalisés avec plusieurs domaines | Moyenne à élevée | Aucun (fonctionnement en parallèle)  |

<div id="pre-migration-checklist">
  ## Liste de vérification préalable à la migration
</div>

Avant de commencer la migration, assurez-vous d’avoir effectué les tâches suivantes :

* Vérifié la propriété de tous les nouveaux domaines personnalisés
* Passé en revue les processus d’authentification actuels et les intégrations aux API
* Identifié toutes les applications qui utilisent le domaine actuel
* Documenté les modèles de courriel et les liens actuels
* Obtenu les certificats SSL/TLS (si vous utilisez des certificats autogérés)
* Testé la nouvelle configuration du domaine personnalisé dans un environnement de développement ou de préproduction
* Préparé un plan de repli
* Planifié la migration pendant une période de faible trafic (le cas échéant)
* Informé les parties prenantes et les utilisateurs (au besoin)

<div id="migration-steps">
  ## Étapes de migration
</div>

<div id="add-your-new-custom-domains">
  ### Ajoutez vos nouveaux domaines personnalisés
</div>

Ajoutez vos nouveaux domaines personnalisés à l’aide de [Auth0 Dashboard](/fr-CA/docs/customize/custom-domains/multiple-custom-domains#configure-multiple-custom-domains) ou de [Management API](https://auth0.com/docs/api/management/v2).

<AuthCodeGroup>
  ```bash cURL theme={null}
  curl --request POST \
    --url 'https://{yourDomain}/api/v2/custom-domains' \
    --header 'authorization: Bearer {yourMgmtApiAccessToken}' \
    --header 'content-type: application/json' \
    --data '{
      "domain": "new-domain.example.com",
      "type": "auth0_managed_certs",
      "domain_metadata": {
        "purpose": "new-brand"
      }
    }'
  ```

  ```javascript Node.js theme={null}
  const newDomain = await management.customDomains.create({
    domain: 'new-domain.example.com',
    type: 'auth0_managed_certs',
    domain_metadata: {
      purpose: 'new-brand'
    }
  });

  console.log('Domain added:', newDomain.custom_domain_id);
  ```
</AuthCodeGroup>

<div id="verify-domain-ownership">
  ### Vérifier la propriété du domaine
</div>

Terminez le processus de vérification de la propriété du domaine pour chaque nouveau domaine personnalisé :

<div id="for-auth0-managed-certificates">
  #### Pour les certificats gérés par Auth0
</div>

1. Notez l’enregistrement CNAME fourni par Auth0
2. Ajoutez l’enregistrement CNAME chez votre fournisseur DNS
3. Vérifiez le domaine dans le Dashboard ou au moyen de l’API

```bash theme={null}
# Obtenir les détails de vérification
curl --request GET \
  --url 'https://{yourDomain}/api/v2/custom-domains/{customDomainId}' \
  --header 'authorization: Bearer {yourMgmtApiAccessToken}'

# Vérifier après l'ajout de l'enregistrement DNS
curl --request POST \
  --url 'https://{yourDomain}/api/v2/custom-domains/{customDomainId}/verify' \
  --header 'authorization: Bearer {yourMgmtApiAccessToken}'
```

<div id="for-self-managed-certificates">
  #### Pour les certificats autogérés
</div>

1. Ajoutez l’enregistrement TXT requis à votre DNS
2. Configurez votre proxy inverse ou votre CDN
3. Téléversez votre certificat SSL
4. Vérifiez le domaine

<div id="configure-default-domain-optional">
  ### Configurer le domaine par défaut (facultatif)
</div>

Si vous voulez qu’un domaine soit utilisé par défaut pour les courriels et les appels à l’API, [définissez-le comme domaine par défaut](/fr-CA/docs/customize/custom-domains/multiple-custom-domains/default-domain):

```bash theme={null}
curl --request PATCH \
  --url 'https://{yourDomain}/api/v2/custom-domains/{customDomainId}' \
  --header 'authorization: Bearer {yourMgmtApiAccessToken}' \
  --header 'content-type: application/json' \
  --data '{
    "is_default": true
  }'
```

<div id="update-application-configurations">
  ### Mettre à jour la configuration des applications
</div>

Mettez à jour vos applications pour utiliser le domaine personnalisé approprié :

<div id="sdk-configuration">
  #### Configuration du SDK
</div>

Mettez à jour l’initialisation de votre SDK Auth0 :

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Le seul changement requis consiste à remplacer, dans le paramètre `domain`, votre domaine canonique Auth0 par votre nouveau domaine personnalisé.
</Callout>

<AuthCodeGroup>
  ```javascript Auth0 SPA SDK theme={null}
  // Avant
  const auth0 = await createAuth0Client({
    domain: 'tenant.auth0.com',
    client_id: '{yourClientId}'
  });

  // Après
  const auth0 = await createAuth0Client({
    domain: 'new-domain.example.com', // Utilisez votre nouveau domaine personnalisé
    client_id: '{yourClientId}'
  });
  ```

  ```javascript Auth0.js theme={null}
  // Avant
  const webAuth = new auth0.WebAuth({
    domain: 'tenant.auth0.com',
    clientID: '{yourClientId}'
  });

  // Après
  const webAuth = new auth0.WebAuth({
    domain: 'new-domain.example.com',
    clientID: '{yourClientId}'
  });
  ```

  ```javascript Node.js theme={null}
  import { ManagementClient } from "auth0";

  // Avant
  const auth0 = new ManagementClient({
    domain: 'tenant.auth0.com',
    clientId: '{yourClientId}',
    clientSecret: '{yourClientSecret}',
  });

  // Après
  const auth0 = new ManagementClient({
    domain: 'new-domain.example.com',
    clientId: '{yourClientId}',
    clientSecret: '{yourClientSecret}',
  });
  ```
</AuthCodeGroup>

<div id="callback-urls">
  #### URL de rappel
</div>

Mettez à jour les URL de rappel de votre application dans Auth0 Dashboard :

1. Accédez à [**Auth0 Dashboard** > **Applications**](https://manage.auth0.com/#/applications). Choisissez l’application à configurer, puis sélectionnez l’onglet **Settings**.
2. Mettez à jour **Allowed Callback URLs** pour y inclure le nouveau domaine :
   ```
   https://new-domain.example.com/callback
   ```
3. Mettez à jour **Allowed Logout URLs** :
   ```
   https://new-domain.example.com/logout
   ```
4. Mettez à jour **Allowed Web Origins** :
   ```
   https://new-domain.example.com
   ```

<div id="update-email-templates">
  ### Mettre à jour les modèles de courriel
</div>

Pour rendre les renseignements sur le domaine personnalisé accessibles dans vos modèles de courriel :

1. Accédez à **Image de marque** > **Domaines personnalisés**
2. Définissez le domaine voulu comme domaine par défaut
3. Personnalisez vos modèles de courriel pour utiliser, au besoin, les renseignements du domaine personnalisé dans le champ « De », l’objet et le corps du message

<Note>
  Le fait de définir un domaine comme domaine par défaut ne modifie pas automatiquement vos courriels. Cela rend le contexte du domaine par défaut accessible dans les modèles de courriel. Vous devez personnaliser vos modèles pour utiliser cette information. Le contexte du domaine par défaut sera accessible lorsqu’aucun domaine précis n’est fourni au moyen de l’en-tête `auth0-custom-domain`.
</Note>

<div id="update-social-identity-providers-idp">
  ### Mettre à jour les fournisseurs d’identité sociaux (IdP)
</div>

Mettez à jour les URI de redirection de vos fournisseurs d’identité sociaux :

<div id="google">
  #### Google
</div>

1. Accédez à la [Google Cloud Console](https://console.cloud.google.com)
2. Accédez à **APIs et services** > **Identifiants**
3. Ajoutez `https://new-domain.example.com/login/callback` aux **URI de redirection autorisés**

<div id="facebook">
  #### Facebook
</div>

1. Accédez à [Facebook Developers](https://developers.facebook.com)
2. Accédez à votre application > **Facebook Login** > **Settings**
3. Ajoutez `https://new-domain.example.com/login/callback` à **Valid OAuth Redirect URIs**

<div id="other-providers">
  #### Autres fournisseurs
</div>

Mettez à jour les URI de redirection de tous les fournisseurs sociaux configurés en suivant la documentation propre à chacun.

<div id="update-enterprise-connections-if-applicable">
  ### Mettre à jour les connexions d’entreprise (le cas échéant)
</div>

Si vous utilisez SAML, WS-Fed, Azure AD ou d’autres connexions d’entreprise, mettez à jour leur configuration :

<div id="saml-connections">
  #### Connexions SAML
</div>

Mettez à jour l’URL du service de consommation d’assertion (ACS) :

```
https://new-domain.example.com/login/callback?connection={connectionName}
```

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Vous n’avez pas besoin de mettre à jour manuellement l’URL ACS auprès de votre IdP si vous utilisez des requêtes SAML initiées par le SP et que votre IdP prend en charge l’ACS dynamique.
</Callout>

<div id="azure-ad-connections">
  #### Connexions à Azure AD
</div>

1. Accédez à Azure Active Directory > **Inscriptions d’applications**
2. Sélectionnez votre application > **Authentification**
3. Ajoutez `https://new-domain.example.com/login/callback` aux **URI de redirection**

<div id="adfs-connections">
  #### Connexions ADFS
</div>

Mettez à jour le point de terminaison dans vos paramètres ADFS pour utiliser le nouveau domaine personnalisé.

<div id="test-authentication">
  ### Tester l’authentification
</div>

Avant de terminer la migration, testez soigneusement ce qui suit :

1. **Connexion des utilisateurs** : Vérifiez que les utilisateurs peuvent s’authentifier à l’aide du nouveau domaine
2. **Réinitialisation du mot de passe** : Vérifiez que les courriels de réinitialisation du mot de passe utilisent le bon domaine
3. **Vérification du courriel** : Vérifiez que les liens de vérification du courriel fonctionnent
4. **Connexions sociales** : Testez chaque fournisseur d’identité sociale configuré
5. **Appels d’API** : Vérifiez que les appels d’API fonctionnent avec le nouveau domaine
6. **Validation des jetons** : Assurez-vous que les JWT contiennent la revendication `iss` appropriée

<div id="monitor-and-verify">
  ### Surveiller et valider
</div>

Après la migration :

1. Surveillez les journaux d’authentification pour repérer toute erreur
2. Vérifiez l’envoi des courriels et le bon fonctionnement des liens
3. Vérifiez la validité du certificat SSL et sa date d’expiration
4. Effectuez des tests à partir de différentes régions géographiques (le cas échéant)
5. Confirmez que toutes les applications utilisent les domaines personnalisés prévus

<div id="decommission-old-domain-if-applicable">
  ### Mettre l’ancien domaine hors service (le cas échéant)
</div>

Si vous remplacez un domaine personnalisé existant :

1. Assurez-vous que toutes les applications ont été migrées vers le nouveau domaine
2. Surveillez le trafic vers l’ancien domaine pour confirmer qu’il n’est plus utilisé
3. Envisagez de conserver l’ancien domaine actif pendant une période de transition
4. Supprimez l’ancien domaine personnalisé lorsque vous êtes prêt :

```bash theme={null}
curl --request DELETE \
  --url 'https://{yourDomain}/api/v2/custom-domains/{oldCustomDomainId}' \
  --header 'authorization: Bearer {yourMgmtApiAccessToken}'
```

<div id="migration-patterns">
  ## Stratégies de migration
</div>

<AccordionGroup>
  <Accordion title="Fonctionnement en parallèle (sans interruption)">
    Utiliser simultanément l’ancien et le nouveau domaine personnalisé :

    1. Ajouter un nouveau domaine personnalisé
    2. Mettre à jour les nouvelles applications pour qu’elles utilisent le nouveau domaine
    3. Maintenir les applications existantes sur l’ancien domaine
    4. Migrer graduellement les applications
    5. Mettre l’ancien domaine hors service une fois la migration terminée

    **Avantages** : Aucune interruption, déploiement graduel, retour arrière facile

    **Inconvénients** : Surcharge de gestion temporaire
  </Accordion>

  <Accordion title="Migration progressive par application">
    Migrer les applications une à la fois :

    1. Identifier les applications selon leur priorité ou leur niveau de risque
    2. Migrer d’abord les applications à faible risque
    3. Surveiller l’apparition de problèmes avant de poursuivre
    4. Migrer les applications restantes
    5. Nettoyer les anciennes configurations

    **Avantages** : Déploiement contrôlé, détection précoce des problèmes

    **Inconvénients** : Échéancier de migration plus long
  </Accordion>

  <Accordion title="Déploiement bleu-vert">
    Utiliser des environnements distincts pour les tests :

    1. Configurer le nouveau domaine personnalisé dans l’environnement de préproduction
    2. Tester minutieusement toutes les fonctionnalités
    3. Basculer la production en une seule opération
    4. Conserver l’ancien domaine comme solution de rechange
    5. Mettre l’ancien domaine hors service après la période de vérification

    **Avantages** : Tests approfondis, retour arrière rapide

    **Inconvénients** : Nécessite un environnement distinct
  </Accordion>
</AccordionGroup>

<div id="handling-existing-user-sessions">
  ## Gestion des sessions d’utilisateur existantes
</div>

Lors de la migration de domaines personnalisés, les sessions d’utilisateur existantes peuvent être affectées :

<div id="session-considerations">
  ### Considérations relatives aux sessions
</div>

* Les sessions créées avec l’ancien domaine restent valides jusqu’à leur expiration
* Les nouvelles connexions créeront des sessions avec le nouveau domaine
* Les sessions entre domaines exigent une planification minutieuse

<div id="recommended-approach">
  ### Approche recommandée
</div>

1. **Informer les utilisateurs** : Indiquez-leur qu’ils pourraient devoir se reconnecter
2. **Période de grâce** : Gardez l’ancien Domaine actif pendant la transition
3. **Transfert de session** : Utilisez Universal Login pour gérer la migration des sessions
4. **Consignes claires** : Fournissez des instructions claires si les utilisateurs rencontrent des problèmes

<div id="rollback-plan">
  ## Plan de retour arrière
</div>

Si vous rencontrez des problèmes pendant la migration :

<div id="immediate-rollback">
  ### Retour arrière immédiat
</div>

1. Rétablissez les configurations de l’application pour utiliser l’ancien domaine
2. Conservez le nouveau domaine personnalisé configuré pour de futures tentatives
3. Consignez le problème à des fins de dépannage

<div id="partial-rollback">
  ### Retour arrière partiel
</div>

1. Identifier les applications touchées
2. Rétablir uniquement ces applications sur l’ancien domaine
3. Enquêter sur les problèmes et les corriger
4. Effectuer de nouveau la migration lorsque vous serez prêt

<div id="complete-rollback">
  ### Retour arrière complet
</div>

1. Mettez à jour toutes les configurations d’application pour utiliser l’ancien domaine
2. Si vous avez défini un domaine par défaut, remettez l’ancien domaine par défaut
3. Informez les utilisateurs de toute mesure requise
4. Planifiez une nouvelle tentative de migration

<div id="troubleshooting">
  ## Dépannage
</div>

<div id="common-issues-and-solutions">
  ### Problèmes courants et solutions
</div>

| Problème                                                  | Cause                                                     | Solution                                                                                                                |
| --------------------------------------------------------- | --------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------- |
| La vérification du domaine échoue                         | Les enregistrements DNS ne se sont pas encore propagés    | Attendez la propagation DNS (cela peut prendre jusqu’à 48 heures), puis vérifiez que l’enregistrement CNAME est correct |
| La connexion redirige vers l’ancien domaine               | La configuration de l’application n’a pas été mise à jour | Mettez à jour l’initialisation du SDK et les URL de rappel                                                              |
| Les liens dans les courriels utilisent le mauvais domaine | Le domaine par défaut n’est pas configuré                 | Définissez le domaine par défaut ou configurez l’acheminement des courriels                                             |
| La connexion sociale échoue                               | Les URI de redirection n’ont pas été mises à jour         | Ajoutez le nouveau domaine personnalisé aux URI de redirection autorisées du fournisseur social                         |
| Émetteur du jeton non valide                              | La validation du JWT attend l’ancien domaine              | Mettez à jour la validation du jeton pour accepter le nouveau domaine comme émetteur                                    |
| Erreurs d’assertion SAML                                  | L’URL ACS n’a pas été mise à jour                         | Mettez à jour la configuration SAML avec la nouvelle URL du domaine personnalisé                                        |
| Erreurs de certificat                                     | Le certificat n’a pas été provisionné ou a expiré         | Vérifiez le domaine, attendez le provisionnement du certificat ou mettez à jour le certificat                           |

<div id="getting-help">
  ### Obtenir de l’aide
</div>

Si vous rencontrez des problèmes durant la migration :

1. Consultez [Auth0 Community](https://community.auth0.com/) pour voir si des problèmes similaires ont été signalés
2. Consultez la [documentation de dépannage](https://support.auth0.com/center/s/knowledge?selectedTopics=Custom%20Domains\&isTopicFilter=true)
3. Communiquez avec l’[assistance Auth0](https://support.auth0.com/) en fournissant :
   * Le nom de votre locataire
   * Les ID des domaines personnalisés
   * Une description détaillée du problème
   * Les étapes à suivre pour reproduire le problème
   * Les messages d’erreur ou les journaux

<div id="post-migration-best-practices">
  ## Bonnes pratiques après la migration
</div>

Après avoir terminé votre migration :

1. **Documenter la configuration** : consignez les applications qui utilisent chaque domaine personnalisé
2. **Surveiller l’expiration des certificats** : configurez des alertes pour le renouvellement des certificats
3. **Réviser périodiquement** : assurez-vous que la configuration des domaines personnalisés répond aux besoins de l’entreprise
4. **Mettre à jour les runbooks** : mettez à jour la documentation opérationnelle avec les nouvelles informations sur les domaines personnalisés
5. **Former les membres de l’équipe** : assurez-vous que votre équipe comprend la nouvelle configuration multidomaine
6. **Prévoir l’évolutivité** : déterminez comment vous gérerez des domaines supplémentaires à l’avenir

<div id="learn-more">
  ## Pour en savoir plus
</div>

* [Plusieurs domaines personnalisés](/fr-CA/docs/customize/custom-domains/multiple-custom-domains)
* [Domaine personnalisé par défaut](/fr-CA/docs/customize/custom-domains/multiple-custom-domains/default-domain)
* [Management API pour plusieurs domaines personnalisés](https://auth0.com/docs/api/management/v2)
* [Configurer les fonctionnalités pour utiliser des domaines personnalisés](/fr-CA/docs/customize/custom-domains/configure-features-to-use-custom-domains)
