> ## 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 migrer d’un domaine personnalisé unique vers 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) + "*****MASQUÉ*****";
          }
          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](/docs/fr-ca/customize/custom-domains/multiple-custom-domains). Que vous ajoutiez des domaines pour différentes images de marque, diverses régions ou plusieurs segments de clientèle, ce guide vous propose des instructions étape par étape pour assurer une transition en douceur.

<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 personnalisés supplémentaires** | Vous avez actuellement un domaine personnalisé et souhaitez en ajouter d’autres tout en conservant le domaine existant opérationnel            | Expansion pour prendre en charge plusieurs images de marque ou régions | Faible           | Aucun                               |
| **Remplacement d’un domaine existant**              | Vous souhaitez remplacer votre domaine personnalisé actuel par un nouveau                                                                      | Changement d’image de marque ou de propriété du domaine                | Moyenne          | Minime (pendant le basculement DNS) |
| **Migration depuis le domaine canonique**           | Vous utilisez actuellement votre domaine canonique Auth0 (par exemple, `tenant.auth0.com`) et souhaitez migrer vers des domaines personnalisés | Mise en œuvre initiale de plusieurs domaines personnalisés             | Moyenne à élevée | Aucun (fonctionnement en parallèle) |

<div id="pre-migration-checklist">
  ## Liste de contrôle pré-migration
</div>

Avant de commencer votre migration, assurez-vous d’avoir effectué ce qui suit :

* Vérifié la propriété de tous les nouveaux domaines personnalisés
* Passé en revue les processus d’authentification actuels et les intégrations au niveau de l’API
* Repéré toutes les applications qui utilisent le domaine actuel
* Documenté les modèles de courriel actuels et les liens
* Obtenu les certificats SSL/TLS (si vous utilisez des certificats autogérés)
* Testé la nouvelle configuration de domaine personnalisé dans un environnement de développement ou de préproduction
* Préparé un plan de retour en arrière
* 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 du [Auth0 Dashboard](/docs/fr-ca/customize/custom-domains/multiple-custom-domains#configure-multiple-custom-domains) ou de la [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>

Effectuez le processus de vérification du domaine pour chaque nouveau domaine personnalisé :

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

1. Prenez note de l’enregistrement CNAME fourni par Auth0
2. Ajoutez l’enregistrement CNAME auprès de 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 gérés par le client
</div>

1. Ajoutez l’enregistrement TXT requis à votre configuration 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 souhaitez utiliser un domaine par défaut pour les courriels et les appels d’API, [définissez-le comme domaine par défaut](/docs/fr-ca/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 le 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 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 à **Branding** > **Custom Domains**
2. Définissez le domaine souhaité comme domaine par défaut
3. Personnalisez vos modèles de courriel pour utiliser les renseignements sur le domaine personnalisé dans l’adresse « From », l’objet et le corps, au besoin

<Note>
  Le fait de définir un 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é sociale (IdP)
</div>

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

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

1. Allez à [Google Cloud Console](https://console.cloud.google.com)
2. Accédez à **APIs & Services** > **Credentials**
3. Ajoutez `https://new-domain.example.com/login/callback` à **Authorized redirect URIs**

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

1. Rendez-vous sur [Facebook Developers](https://developers.facebook.com)
2. Accédez à votre application > **Facebook Login** > **Paramètres**
3. Ajoutez `https://new-domain.example.com/login/callback` à **URI de redirection OAuth valides**

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

Mettez à jour les URI de redirection de tous les fournisseurs d’identité sociale 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 de l’Assertion Consumer Service (ACS) :

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

<Callout icon="file-lines" color="#0EA5E9" iconType="regular">
  Vous n’avez pas à mettre à jour manuellement l’URL ACS dans 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 > **App registrations**
2. Sélectionnez votre application > **Authentication**
3. Ajoutez `https://new-domain.example.com/login/callback` à **Redirect URIs**

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

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

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

Avant de terminer la migration, testez minutieusement 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 social configuré
5. **Appels d’API** : vérifiez que les appels d’API fonctionnent avec le nouveau domaine
6. **Validation du jeton** : assurez-vous que les JWTs contiennent le claim `iss` correct

<div id="monitor-and-verify">
  ### Surveiller et vérifier
</div>

Après la migration :

1. Surveillez les journaux d’authentification pour détecter toute erreur
2. Vérifiez la livraison des courriels et le bon fonctionnement des liens
3. Vérifiez la validité du certificat SSL et les dates 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 (aucun temps d’arrêt)">
    Faites fonctionner simultanément les anciens et les nouveaux domaines personnalisés :

    1. Ajouter le nouveau domaine personnalisé
    2. Mettre à jour les nouvelles applications pour utiliser le nouveau domaine
    3. Conserver les applications existantes sur l’ancien domaine
    4. Migrer progressivement les applications
    5. Retirer l’ancien domaine une fois la migration terminée

    **Avantages** : Aucun temps d’arrêt, déploiement progressif, retour en arrière facile

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

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

    1. Identifier les applications selon la priorité ou le risque
    2. Migrer d’abord les applications à faible risque
    3. Surveiller les problèmes avant de poursuivre
    4. Migrer les autres applications
    5. Nettoyer les anciennes configurations

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

    **Inconvénients** : Migration plus longue
  </Accordion>

  <Accordion title="Déploiement blue-green">
    Utilisez 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 secours
    5. Retirer l’ancien domaine après la période de vérification

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

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

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

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

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

* Les sessions créées avec l’ancien domaine demeurent valides jusqu’à leur expiration
* Les nouvelles ouvertures de session 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. **Aviser les utilisateurs** : Informez les utilisateurs qu’ils pourraient devoir se connecter à nouveau
2. **Période de transition** : Gardez l’ancien domaine actif pendant la transition
3. **Transfert de session** : Utilisez Universal Login pour gérer la migration de la session
4. **Directives claires** : Fournissez des instructions claires si les utilisateurs rencontrent des problèmes

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

Si vous rencontrez des problèmes lors de la migration :

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

1. Rétablir les configurations de l’application pour utiliser l’ancien domaine
2. Conserver le nouveau domaine personnalisé configuré pour de futures tentatives
3. Documenter le problème pour le dépannage

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

1. Repérez les applications touchées
2. Rétablissez uniquement ces applications sur l’ancien domaine
3. Analysez les problèmes et corrigez-les
4. Relancez la migration lorsque vous serez prêt

<div id="complete-rollback">
  ### Retour en arrière complète
</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, revenez à l’ancien domaine
3. Informez les utilisateurs de toute action 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) et 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 de courriel 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 d’identité sociale          |
| Émetteur de jeton invalide                         | La validation du JWT s’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 l’URL du nouveau 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 pendant la migration :

1. Consultez [Auth0 Community](https://community.auth0.com/) pour voir si des problèmes semblables 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 [Auth0 Support](https://support.auth0.com/) en fournissant :
   * Le nom de votre tenant
   * Les ID de domaines personnalisés
   * Une description détaillée du problème
   * Les étapes 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. **Documentez la configuration** : notez quelles applications utilisent quels domaines personnalisés
2. **Surveillez l’expiration des certificats** : configurez des alertes pour le renouvellement des certificats
3. **Révisez périodiquement** : assurez-vous que la configuration des domaines personnalisés correspond aux besoins de l’entreprise
4. **Mettez à jour les runbooks** : mettez à jour la documentation opérationnelle avec les nouveaux renseignements sur le domaine personnalisé
5. **Formez les membres de l’équipe** : assurez-vous que votre équipe comprend la nouvelle configuration multidéomaine
6. **Prévoyez l’évolution** : réfléchissez à la façon dont vous gérerez des domaines supplémentaires à l’avenir

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

* [Plusieurs domaines personnalisés](/docs/fr-ca/customize/custom-domains/multiple-custom-domains)
* [Domaine personnalisé par défaut](/docs/fr-ca/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](/docs/fr-ca/customize/custom-domains/configure-features-to-use-custom-domains)
