Concepts clés
Paramètre de domaine
domain qui indique quel domaine Auth0 utiliser pour l’authentification. Si vous utilisez des domaines personnalisés, définissez ce paramètre sur votre domaine personnalisé plutôt que sur votre domaine canonique Auth0.
Sans domaine personnalisé :
Émetteur du jeton
iss (émetteur) des jetons est définie sur votre domaine personnalisé :
SDK d’authentification
Lorsque vous utilisez MCD, le client est responsable de fournir et de valider tous les domaines personnalisés. Lorsque vous configurez les SDK pour résoudre les domaines personnalisés du locataire à l’aide des fonctions de résolution de domaine, vous devez vous assurer que tous les domaines résolus sont dignes de confiance. Une mauvaise configuration du résolveur de domaine peut permettre de contourner l’authentification auprès de la partie de confiance ou exposer l’application à une falsification de requêtes côté serveur. Si vos domaines et vos serveurs proxy ne sont pas configurés correctement, cela peut créer des vulnérabilités de sécurité critiques dont Okta ne peut être tenue responsable.
SDK Auth0 SPA (JavaScript)
Next.js
- Un seul locataire Auth0, plusieurs domaines : Tous les domaines personnalisés partagent le même
clientIdet le mêmeclientSecret, puisqu’ils appartiennent au même locataire Auth0. - Fonction DomainResolver : Le paramètre
domainaccepte une fonction(config: { headers: Headers; url?: URL }) => Promise<string> | string. Cela permet de résoudre le domaine dynamiquement pour chaque requête selon les en-têtes de la requête entrante. - Mise en cache des instances : Le SDK met automatiquement en cache les instances
Auth0Clientpar domaine au moyen d’un cache LRU borné (maximum de 100 entrées) afin d’améliorer les performances. - Isolation des sessions : Les sessions créées au moyen d’un domaine personnalisé sont isolées à ce domaine et ne peuvent pas être utilisées de façon interchangeable avec des sessions d’un autre domaine.
- Paramètre URL : Le paramètre
urldans le résolveur vautundefineddans les Server Components et les Server Actions; il est seulement disponible dans le middleware ou les routes d’API. - Ajustement du cache de découverte : Configurez la mise en cache des métadonnées OIDC avec l’option
discoveryCache:
SDK React d’Auth0
Auth0.js
Node.js (Express)
SDK pour appareils mobiles
iOS (Swift)
Android (Kotlin)
React Native
Flutter
SDK de gestion
auth0-custom-domain ou utiliser le domaine par défaut.
SDK de gestion pour Node.js
SDK de gestion pour Python
SDK de gestion pour Go
Validation du jeton
Node.js (Express)
Python (Flask)
Java (Spring Boot)
Configuration propre à chaque environnement
Structure du fichier .env
Chargement de la configuration
Dépannage
Problèmes courants
| Problème | Cause | Solution |
|---|---|---|
| Erreur d’émetteur invalide | La validation du jeton s’attend au domaine canonique, mais reçoit un domaine personnalisé | Mettez à jour la validation du jeton pour accepter le domaine personnalisé comme émetteur |
| Échec de la récupération du JWKS | L’URI du JWKS pointe vers le domaine canonique | Mettez à jour l’URI du JWKS pour utiliser le domaine personnalisé : https://custom-domain/.well-known/jwks.json |
| URI de redirection non concordante | L’URL de rappel ne correspond pas aux URI de redirection configurées | Ajoutez l’URL de rappel du domaine personnalisé aux paramètres de l’application |
| Erreurs d’origine croisée (CORS) | Le domaine personnalisé ne figure pas parmi les origines autorisées | Ajoutez le domaine personnalisé à Allowed Web Origins dans les paramètres de l’application |
| Échec du chargement de Lock | Le paramètre configurationBaseUrl est absent | Ajoutez le paramètre configurationBaseUrl avec l’URL du CDN régional |
Bonnes pratiques
- Utilisez des variables d’environnement : stockez les domaines personnalisés dans des fichiers de configuration propres à chaque environnement
- Validez plusieurs émetteurs : si vous utilisez plusieurs domaines personnalisés, configurez la validation des jetons pour les accepter tous comme émetteurs valides
- Mettez à jour les URL de rappel : assurez-vous que tous les domaines personnalisés sont ajoutés à Allowed Callback URLs dans les paramètres de l’application
- Testez de façon approfondie : testez l’authentification avec chaque domaine personnalisé avant la mise en production
- Surveillez les émetteurs de jetons : consignez et surveillez la revendication
issdans les jetons pour vous assurer que le bon domaine personnalisé est utilisé - Documentez les mappages de domaines : tenez à jour une documentation claire indiquant quelles applications utilisent quels domaines personnalisés
- Gérez correctement les échecs : implémentez une gestion des erreurs appropriée pour les échecs d’authentification
- Mettez en cache JWKS : mettez en cache les données JWKS pour améliorer les performances et réduire le nombre de requêtes