Skip to main content
Lorsque vous utilisez plusieurs domaines personnalisés, vous devez configurer vos SDK Auth0 pour qu’ils utilisent le domaine personnalisé approprié pour l’authentification. Ce guide présente la configuration des SDK pour différentes plateformes et divers scénarios.

Concepts clés

Paramètre de domaine

Tous les SDK Auth0 nécessitent un paramètre 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 Auth0 canonique. Sans domaine personnalisé :
Avec un domaine personnalisé :

Émetteur du jeton

Lorsque vous utilisez un domaine personnalisé, les jetons auront le champ iss (issuer) défini sur votre domaine personnalisé :
Vous devez configurer la validation du jeton pour qu’elle reconnaisse votre domaine personnalisé comme un émetteur valide.

SDK d’authentification

Lorsque vous utilisez MCD, le client est responsable de fournir et de valider tous les domaines personnalisés. Lorsque vous configurez des SDK pour résoudre les domaines personnalisés du tenant au moyen des fonctions de résolution de domaine, il vous incombe de vous assurer que tous les domaines résolus sont fiables. Une mauvaise configuration du résolveur de domaine peut permettre de contourner l’authentification du côté de la partie de confiance ou exposer l’application à une attaque de falsification de requêtes côté serveur. Si vos domaines et vos serveurs proxy ne sont pas correctement configurés, cela peut entraîner des vulnérabilités de sécurité critiques dont Okta ne peut être tenue responsable.

Auth0 SPA SDK (Javascript)

Pour les applications monopage utilisant le Auth0 SPA SDK :

Next.js

Pour les applications Next.js qui utilisent le Auth0 Next.js SDK (v4+) : Concepts clés pour MCD avec Next.js :
  • Un seul tenant Auth0, plusieurs domaines : Tous les domaines personnalisés partagent le même clientId et le même clientSecret, puisqu’ils appartiennent au même tenant Auth0.
  • Fonction DomainResolver : Le paramètre domain accepte une fonction (config: { headers: Headers; url?: URL }) => Promise<string> | string. Cela permet de résoudre dynamiquement le domaine 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 Auth0Client par domaine au moyen d’un cache LRU de taille limitée (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 les sessions d’un autre domaine.
  • Paramètre d’URL : Le paramètre url dans le résolveur est undefined dans les composants serveur et les Actions serveur; il n’est disponible que 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 :

Auth0 React SDK

Pour les applications React qui utilisent le Auth0 React SDK :
Dans les cas où plusieurs domaines sont utilisés :

Auth0.js

Pour les applications qui utilisent Auth0.js :

Node.js (Express)

Pour les applications Node.js qui utilisent express-openid-connect :
Pour les scénarios multilocataires :

SDK mobiles

iOS (Swift)

Avec Auth0.swift :
Pour sélectionner le domaine dynamiquement :

Android (Kotlin)

Avec Auth0.Android :
Pour prendre en charge plusieurs domaines :

React Native

Avec react-native-auth0 :

Flutter

Avec flutter_auth0 :

SDK de gestion

Les SDK de gestion permettent d’interagir avec Auth0 Management API. Lorsque vous utilisez des domaines personnalisés, vous devrez peut-être inclure l’en-tête 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 des jetons

Lorsque vous utilisez des domaines personnalisés, mettez à jour la validation de vos jetons pour accepter le domaine personnalisé comme émetteur.

Node.js (Express)

Avec express-jwt ou jose :
Pour plusieurs domaines personnalisés :

Python (Flask)

Avec python-jose :

Java (Spring Boot)

Avec Spring Security :

Configuration propre à chaque environnement

Utilisez des variables d’environnement pour gérer les domaines personnalisés d’un environnement à l’autre :

Structure du fichier .env

Chargement de la configuration

Dépannage

Problèmes courants

ProblèmeCauseSolution
Erreur d’émetteur non valideLa 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 JWKSL’URI JWKS pointe vers le domaine canoniqueMettez à jour l’URI JWKS pour utiliser le domaine personnalisé : https://custom-domain/.well-known/jwks.json
Non-correspondance de l’URI de redirectionL’URL de rappel ne correspond pas aux URI de redirection configuréesAjoutez l’URL de rappel du domaine personnalisé aux paramètres de l’application
Erreurs inter-origines (CORS)Le domaine personnalisé ne figure pas parmi les origines autoriséesAjoutez le domaine personnalisé à Allowed Web Origins dans les paramètres de l’application
Échec du chargement de LockconfigurationBaseUrl est manquantAjoutez le paramètre configurationBaseUrl avec l’URL régionale du CDN

Bonnes pratiques

  1. Utilisez des variables d’environnement : stockez les domaines personnalisés dans des fichiers de configuration propres à chaque environnement
  2. Validez plusieurs émetteurs : si vous utilisez plusieurs domaines personnalisés, configurez la validation des jetons pour accepter tous les émetteurs valides
  3. Mettez à jour les URL de rappel : assurez-vous que tous les domaines personnalisés sont ajoutés aux Allowed Callback URLs dans les paramètres de l’application
  4. Testez de façon approfondie : testez l’authentification avec chaque domaine personnalisé avant le déploiement en production
  5. Surveillez les émetteurs des jetons : consignez et surveillez le claim iss dans les jetons pour vous assurer que le bon domaine personnalisé est utilisé
  6. Documentez les mappages de domaines : tenez à jour une documentation claire indiquant quelles applications utilisent quels domaines personnalisés
  7. Gérez bien les échecs : mettez en place une gestion adéquate des erreurs en cas d’échec d’authentification
  8. Mettez JWKS en cache : mettez en cache les données JWKS pour améliorer les performances et réduire les requêtes

En savoir plus