auth0-custom-domains

Par auth0 · agent-skills

À utiliser lors de la configuration, du dépannage, de la gestion, de la suppression ou de la vérification de l'état d'un domaine d'authentification personnalisé Auth0 (ex. : login.exemple.com), OU lors du diagnostic d'une erreur (400/403/404/409/429) provenant de l'API de gestion `/custom-domains` — en particulier les 403 sur le niveau Free (carte de crédit requise, pas une montée de plan), les 403 sur les certificats autogérés, les 400 de type PATCH, `operation_not_supported` sur `relying_party_identifier`, et les 409 de domaine déjà existant. Gère la création d'enregistrements CNAME chez le fournisseur DNS de l'utilisateur (Cloudflare, AWS Route 53, Azure DNS en automatique ; autres registrars en mode guidé), le polling de vérification, les domaines personnalisés multiples (MCD), la sélection du domaine par défaut, la politique TLS, l'en-tête IP client, l'identifiant de partie de confiance passkey par domaine, et les métadonnées de domaine.

npx skills add https://github.com/auth0/agent-skills --skill auth0-custom-domains

Domaines Personnalisés Auth0

Piloter les domaines personnalisés Auth0 de bout en bout : API Management Auth0, fournisseur DNS, polling de vérification, et la configuration qui assemble tout. Détecte le fournisseur DNS de l'utilisateur (Cloudflare, Route 53, Azure DNS, ou autre) et automatise la création d'enregistrements lorsque le fournisseur le supporte.

Vue d'ensemble

Cette skill est basée sur les capacités, non sur les étapes. Elle groupe le travail qu'un utilisateur pourrait vouloir faire en cinq capacités distinctes (setup, troubleshoot, manage, remove, health check), chacune avec son propre flux dans un fichier de référence dédié. Le SKILL.md principal agit comme un hall d'accueil : il contient le tableau des capacités, les concepts clés, les prérequis et les erreurs courantes qui s'appliquent à tous les flux. Quand un utilisateur invoque la skill, choisissez la capacité correspondante dans le tableau, chargez son fichier de référence, et suivez ce flux.

La conception basée sur les capacités correspond à la façon dont les utilisateurs viennent vraiment au travail des domaines personnalisés Auth0 : « en configurer un », « le mien est cassé », « changer quelque chose », « en supprimer un », ou « ma configuration fonctionne-t-elle toujours ? ». Chaque intention correspond à un flux distinct avec ses propres vérifications de sécurité et points de passage.

Style d'interaction

Posez les questions sous forme de texte conversationnel simple. N'utilisez jamais d'éléments d'interface structurés (par exemple, AskUserQuestion) sauf pour une seule confirmation oui/non immédiatement avant une action destructrice ou irréversible (create, PATCH, delete). Pour tout le reste :

  • Routage des capacités : présenter une liste numérotée et attendre la réponse de l'utilisateur
  • Collecte d'entrées : poser une question ciblée à la fois ; attendre une réponse avant la suivante
  • Valeurs libres (noms d'hôte, noms de domaine, etc.) : demander directement — ne pas les envelopper dans un widget qui force un clic avant la saisie

Exemple du bon modèle pour le routage des capacités :

Que voulez-vous faire ?

1. Configurer un domaine personnalisé
2. Dépanner la vérification
3. Gérer un domaine existant
4. Supprimer un domaine
5. Vérifier la santé du domaine (lecture seule, point de départ sûr)

Exemple du bon modèle pour une entrée unique :

Quel est le nom d'hôte que vous voulez configurer ? (par exemple, login.example.com)

Triage des codes d'erreur — VÉRIFIEZ D'ABORD

Si le message de l'utilisateur porte principalement sur un code d'erreur HTTP de l'API Management (par exemple, « j'ai reçu un 403 », « pourquoi cela retourne un 409 ? », un corps d'erreur collé, une entrée de journal avec un code de statut), répondez d'abord à partir de ce tableau. Ne passez pas à des connaissances générales Auth0 — cela conduit à de mauvais conseils en particulier dans le cas 403 du tier Free. Ce n'est qu'après la réponse du code d'erreur que vous pouvez proposer de router vers la capacité correspondante si l'utilisateur veut continuer (par exemple, « voulez-vous que je vous guide dans Setup avec ce correctif en place ? »).

Statut et contexte Diagnostic et correctif corrects
403 sur POST /custom-domains (tier Free) Ce n'est pas un problème de plan. Les domaines personnalisés sont disponibles sur tous les plans, y compris Free (confirmé dans la documentation Auth0 : « Pour configurer un domaine personnalisé gratuit, les tenants Auth0 doivent avoir une carte de crédit valide en dossier à des fins de vérification d'identité et de prévention de la fraude. La carte de crédit ne sera pas facturée. »). Correctif au Dashboard → Tenant Settings → Billing en ajoutant une carte. Ne suggérez PAS une mise à niveau de plan.
403 sur POST /custom-domains avec type: self_managed_certs C'est un problème de plan. Les certificats auto-gérés sont réservés à Enterprise. Soit rétrograder à type: auth0_managed_certs (fonctionne sur tous les plans), soit passer à Enterprise.
409 sur POST /custom-domains Le domaine existe déjà sur ce tenant ou un autre. Exécutez auth0 domains list pour vérifier ; s'il est sur un autre tenant que l'utilisateur possède, supprimez-le d'abord là. Ne pas réessayer une création fraîche.
400 sur PATCH /custom-domains/{id} avec type dans le corps type est fixé au moment de la création et rejeté par PATCH. Router vers la suppression (capacité 4) + recréation (capacité 1). Avertir du temps d'arrêt auth lors du basculement.
400 avec operation_not_supported sur relying_party_identifier Feature-flag gate sur le tenant. Réessayer sans relying_party_identifier et demander au support Auth0 d'activer le flag.
404 sur n'importe quel endpoint custom-domain custom_domain_id incorrect, ou mauvais tenant. Vérifier avec auth0 tenants list + auth0 domains list.
429 Rate limited. Revenir en arrière ; le modèle verify-poll backoff de la skill (5s, 10s, 20s, 30s, 60s) évite cela.

Référence complète des codes d'erreur avec tous les cas et résolutions : references/api.md#error-codes.

Capacités

Quand cette skill est invoquée et que l'utilisateur ne pose PAS de question sur un code d'erreur, demandez-lui quelle capacité il veut en utilisant une simple liste numérotée (voir Style d'interaction ci-dessus). Router vers Check domain health en premier quand l'utilisateur signale un problème sans cause connue spécifique, ou quand il ne sait pas quelle capacité il lui faut ; c'est le démarreur sûr en lecture seule qui les pointera vers le bon suivi.

# Capacité Ce qu'elle fait
1 Configurer un domaine personnalisé De bout en bout : créer le domaine dans Auth0, détecter le fournisseur DNS, écrire l'enregistrement CNAME (automatisé sur Cloudflare / Route 53 / Azure ; guidé sur les autres fournisseurs), vérifier la propriété, et signaler ce qu'il faut mettre à jour dans les applications de l'utilisateur. Gère la configuration initiale et l'ajout à MCD. Voir references/capability-setup.md
2 Dépanner la vérification Domaine bloqué dans pending_verification ou vérification échouée. Échelle de diagnostic : comparer DNS à attendu, vérifier les proxies / aplatissement CNAME / enregistrements conflictuels / propagation / problèmes de zone privée, puis réessayer. Voir references/capability-troubleshoot.md
3 Gérer les domaines existants Éditions chirurgicales sur domaines déjà configurés : définir ou changer la valeur par défaut (pour MCD), mettre à jour la politique TLS, configurer l'en-tête IP client personnalisé, définir l'identifiant de la partie de confiance pour les passkeys, gérer les métadonnées par domaine (jusqu'à 10 paires clé-valeur lisibles dans Actions), lister les domaines et afficher le statut. Piloté par l'intention. Le type de certificat est fixé au moment de la création ; PATCH rejette les modifications de type. Voir references/capability-manage.md
4 Supprimer un domaine personnalisé Supprimer un domaine en toute sécurité : avertir s'il est le domaine par défaut, afficher les applications dépendantes, supprimer dans Auth0, nettoyer le CNAME dans DNS. Voir references/capability-remove.md
5 Vérifier la santé du domaine Lecture seule : lister tous les domaines personnalisés, vérifier que les enregistrements DNS correspondent aux valeurs attendues, afficher la configuration du domaine par défaut, signaler tout ce qui nécessite de l'attention. Capacité de démarreur sûre. Voir references/capability-health.md

Choisissez une capacité, puis suivez le flux dans son fichier de référence. Les sections Prérequis et Concepts Clés ci-dessous s'appliquent à toutes les capacités.

Concepts Clés

Concept Description
Enregistrement CNAME Enregistrement DNS pointant votre domaine personnalisé vers l'edge Auth0 (par exemple, {tenant}.edge.tenants.auth0.com). Doit rester dans DNS en permanence pour le renouvellement des certificats
Certificat Géré par Auth0 Auth0 provisionne et renouvelle automatiquement les certificats TLS environ tous les 3 mois. Par défaut et recommandé. Le type est fixé au moment de la création et ne peut pas être changé via PATCH
Certificat Auto-Géré TLS se termine à un reverse proxy (Cloudflare, CloudFront, Azure Front Door, ou GCP LB). Réservé à Enterprise ; la vérification utilise TXT au lieu de CNAME. Le type est fixé au moment de la création et ne peut pas être changé via PATCH ; pour changer, supprimer et recréer le domaine
Détection NS Rechercher les nameservers du domaine racine pour identifier le fournisseur DNS et router vers le niveau d'automatisation correct
Domaines Personnalisés Multiples (MCD) Fonctionnalité Enterprise ; jusqu'à 20 domaines par tenant pour multi-marque ou multi-région
Domaine Personnalisé Par Défaut Quand MCD est configuré, le domaine utilisé quand un appel d'API Management n'envoie pas l'en-tête auth0-custom-domain
Identifiant de la Partie de Confiance (RPID) relying_party_identifier par domaine qui découple le nom d'hôte du domaine personnalisé du rpId passkey. Défini à la création ou via PATCH. Permet de servir l'auth à login.example.com tandis que les passkeys lient à example.com pour la réutilisation inter-surface
Politique TLS tls_policy sur le domaine contrôle la version TLS minimale / la posture de cipher pour les certificats gérés par Auth0. Défaut recommended. Défini à la création ou via PATCH
En-tête IP Client Personnalisé custom_client_ip_header indique à Auth0 quel en-tête de requête porte l'IP client réelle quand le trafic passe par un reverse proxy. Valeurs valides : true-client-ip, cf-connecting-ip, x-forwarded-for, x-azure-clientip. Défini à la création ou via PATCH
Métadonnées de Domaine Jusqu'à 10 paires clé-valeur personnalisées attachées à un domaine personnalisé (clés et valeurs ≤ 255 caractères). Lire dans Actions via event.custom_domain.domain_metadata pour la logique par domaine (tagging région, marque, env)

Le schéma complet et le comportement du token / iss vivent dans references/advanced.md.

Prérequis

Ceux-ci s'appliquent à toute capacité qui écrit sur le tenant. Check domain health est en lecture seule et peut être exécutée en premier pour vérifier ceux-ci.

Accès à l'API Management Auth0

Toutes les capacités utilisent l'API Management. Soit :

  • La CLI Auth0 (auth0 ...) authentifiée au tenant cible (auth0 tenants use <name>), ou
  • Une application Machine-to-Machine avec les scopes dans references/api.md.

Vérifiez le tenant actif immédiatement avant la première commande CLI Auth0 dans une capacité, pas à l'invocation de la skill. Ne pas vérifier le tenant avant que l'utilisateur ait choisi une capacité. Si une capacité n'utilise que des outils non-CLI (par exemple, recherches DNS, Cloudflare MCP, appels directs d'API Management via curl), ignorer entièrement la vérification du tenant.

Quand la capacité choisie utilise la CLI Auth0, exécutez ceci avant la première commande CLI :

auth0 tenants list

Cherchez la ligne marquée comme active (ou vérifiez le champ active dans la sortie JSON). Affichsignez le tenant actif à l'utilisateur et demandez-lui de confirmer que c'est la cible prévue. S'il est incorrect, arrêtez et faites exécuter à l'utilisateur :

auth0 tenants use <tenant-name>

Puis re-confirmez avant de continuer. Pour les appels mutants (create, PATCH, delete), exigez une confirmation explicite. Pour les flux CLI en lecture seule, afficher le nom du tenant (et le nommer dans le rapport de sortie) suffit — ne jamais supposer que le tenant actif est correct basé sur le seul contexte conversationnel.

Accès au fournisseur DNS (pour Set up, Troubleshoot, et Remove)

Configurer un domaine personnalisé écrit un CNAME. Supprimer un domaine personnalisé en supprime un. Dépanner la vérification peut suggérer un correctif qui nécessite une édition DNS. Ce dont la skill a besoin dépend du tier du fournisseur :

  • Tier 1 Cloudflare : Cloudflare MCP connecté. Sinon, la skill demande à l'utilisateur d'exécuter claude mcp add --transport http cloudflare https://mcp.cloudflare.com/mcp et d'autoriser dans le navigateur.
  • Tier 2 AWS Route 53 : Credentials AWS configurées (variables env, config partagée, ou session SSO). Vérifiées avec aws sts get-caller-identity.
  • Tier 3 Azure DNS : Azure CLI connecté. Vérifié avec az account show.
  • Tier 4 autre : pas d'accès programmatique ; l'utilisateur ajoute manuellement l'enregistrement dans le tableau de bord de son fournisseur.

Exigences de plan pour l'automatisation : Aucun des trois tiers automatisés ne nécessite un plan payant du côté du fournisseur DNS. Les opérations CRUD d'enregistrement DNS Cloudflare via le MCP fonctionnent sur le plan Free (les zones Free créées après septembre 2024 sont plafonnées à 200 enregistrements DNS par zone ; le CNAME d'Auth0 en compte un). Route 53 est au paiement à l'utilisation (~0,50 $/zone hébergée/mois + coûts de requête, non dans le tier gratuit AWS). Azure DNS est basé sur un abonnement sans gating de tier ; l'identité connectée a besoin du rôle DNS Zone Contributor. Détails complets par tier dans les sous-fichiers par fournisseur sous references/providers/ (routeur : references/providers.md).

Carte de crédit en dossier (tenants tier Free)

Les domaines personnalisés sont disponibles sur tous les tiers de plan, y compris Free. Les tenants Free ont besoin d'une carte de crédit en dossier pour la vérification d'identité (la carte ne sera pas facturée). Sans elle, POST /custom-domains retourne 403. Correctif au Dashboard → Tenant Settings → Billing (ou la section Teams pour les tenants gérés par Teams).

Surfacer cela comme la cause probable sur tout 403 plutôt que de suggérer une mise à niveau de plan.

Erreurs Courantes

Index rapide ; chaque entrée renvoie au traitement canonique dans le fichier de capacité pertinent.

Erreur Voir
Supposer qu'un 403 à la création signifie une mise à niveau de plan api.md error codes
Supprimer le CNAME après vérification (casse le renouvellement de cert) capability-5 interpreting results
Utiliser un sous-domaine avec passkeys sans définir relying_party_identifier capability-3 RPID section
Essayer de changer le type de certificat via PATCH capability-3 scope note
Activer le proxy DNS sur le CNAME (nuage orange Cloudflare) capability-2 proxy check
Activer l'aplatissement CNAME sur la zone capability-2 flattening check
Supprimer et recréer pour « débloquer » la vérification capability-2 what not to do
Ne pas mettre à jour le SDK domain / issuerBaseURL après vérification capability-1 report next steps
Appeler l'API Management via le domaine tenant sous MCD advanced.md auth0-custom-domain header

Skills Associées

  • auth0-branding : Personnaliser l'apparence de Universal Login (les modèles de page nécessitent un domaine personnalisé vérifié)
  • auth0-organizations : Branding spécifique à l'organisation pour la multi-location B2B

Références

Docs Externes

Skills similaires