Skip to main content

Utilisez l’IA pour intégrer Auth0

Si vous utilisez un assistant IA de programmation comme Claude Code, Cursor ou GitHub Copilot, vous pouvez ajouter automatiquement l’authentification à l’Auth0 API en quelques minutes grâce à Agent Skills.Installer :
Ensuite, demandez à votre assistant IA :
Votre assistant IA créera automatiquement votre Auth0 API, récupérera les identifiants, installera go-jwt-middleware, configurera le validateur et protégera vos points de terminaison d’API à l’aide de la validation JWT. Documentation complète d’Agent Skills →
Prérequis : Avant de commencer, assurez-vous d’avoir installé les éléments suivants :
  • Go 1.24 ou une version ultérieure (requis pour la prise en charge des génériques dans go-jwt-middleware v3)
  • Git pour le contrôle de version
Vérifiez l’installation : go version

Pour commencer

Vous allez créer une API Go avec trois points de terminaison illustrant différents niveaux de protection : accès public, authentification par JWT et permissions à portée limitée. La mise en œuvre complète utilise go-jwt-middleware v3 avec la bibliothèque standard net/http de Go.

Voir l’exemple sur GitHub

Exemple complet fonctionnel avec tests
1

Créer un nouveau projet

Créez un nouveau dossier pour votre API en Go et initialisez un module.
Installez les dépendances requises :
Créez la structure du projet :
go.mod
2

Configurez votre API Auth0

Ensuite, vous devez créer une nouvelle API dans votre tenant Auth0 et ajouter les variables d’environnement à votre projet.Vous avez deux options pour configurer votre API Auth0 : utiliser une commande CLI ou la configurer manuellement dans le Dashboard :
Exécutez la commande suivante dans le répertoire racine de votre projet pour créer une API Auth0 :
Une fois l’API créée, copiez les valeurs Identifier et Domain, puis créez votre fichier .env :
Cette commande va :
  1. Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
  2. Créer une API Auth0 avec l’identifiant spécifié
  3. Afficher les détails de l’API, y compris le domaine et l’identifiant
Sécurité : N’envoyez jamais de fichiers .env dans le contrôle de version. Ajoutez .env à votre fichier .gitignore.
3

Définir les permissions d’API

Les permissions (scopes) vous permettent de définir comment les ressources peuvent être consultées. Par exemple, accordez l’accès read aux gestionnaires et l’accès write aux administrateurs.
  1. Dans les paramètres de votre API, cliquez sur l’onglet Permissions
  2. Créez la permission suivante :
Ce tutoriel utilise le scope read:messages pour protéger le point de terminaison associé à cette portée. Vous pouvez définir des permissions supplémentaires selon les besoins de votre application.
4

Créer un chargeur de configuration

Créez un package de configuration pour charger et valider des variables d’environnement.
internal/config/auth.go
Ce que cela fait :
  • Charge le domaine Auth0 et l’audience à partir des variables d’environnement
  • Valide que la configuration requise est présente au démarrage
  • Renvoie une structure de configuration typée et sûre à utiliser dans toute l’application
5

Créer des revendications personnalisées et un validateur JWT

Les claims personnalisées vous permettent d’extraire et de valider des données propres à l’application à partir de JWTs. Le validateur est le composant central qui vérifie les jetons auprès d’Auth0.
internal/auth/claims.go
Points clés :
  • La méthode Validate est appelée automatiquement par le middleware après l’analyse du JWT
  • HasScope analyse les scopes séparées par des espaces pour le contrôle d’accès basé sur les permissions
  • Le validateur utilise la mise en cache JWKS (TTL de 5 min) et tolère un décalage d’horloge de 30 s
  • L’algorithme RS256 est explicitement défini pour prévenir les attaques de confusion d’algorithme
6

Créer un middleware HTTP et des gestionnaires

Le middleware encapsule le validateur pour les requêtes HTTP. Les handlers illustrent trois niveaux de protection : public, privé et protégé par permission.
internal/auth/middleware.go
Niveaux de protection :
  • Public (/api/public) — Aucune authentification requise
  • Privé (/api/private) — JWT valide requis
  • Avec permission (/api/private-scoped) — JWT valide + permission read:messages requise
7

Créer le serveur principal

Reliez le tout dans le point d’entrée principal avec des délais d’expiration prêts pour la production et un arrêt en douceur :
cmd/server/main.go
8

Lancez et testez votre API

Lancez le serveur de développement :
Vous devriez voir : Server starting on :8080Testez le point de terminaison public (aucune authentification requise) :
Vous devriez voir :
Testez l’endpoint privé sans token (échec attendu) :
Vous devriez voir une erreur 401 Unauthorized :
Pour tester avec un token valide, accédez à votre API dans le Auth0 Dashboard, cliquez sur l’onglet Test et copiez l’access token. Exécutez ensuite :
Testez le point de terminaison à portée restreinte (nécessite l’autorisation read:messages) :
VérificationVous devriez maintenant disposer d’une API Go protégée. Votre API :
  1. Accepte les requêtes vers les points de terminaison publics sans authentification
  2. Rejette les requêtes vers les points de terminaison protégés sans jeton valide
  3. Valide les jetons JWT en fonction de votre domaine Auth0 et de votre audience
  4. Applique un contrôle d’accès basé sur les permissions à l’aide des scopes

Appeler votre API

Vous pouvez appeler votre API protégée à partir de n’importe quelle application en transmettant un jeton d’accès dans l’en-tête Authorization en tant que jeton Bearer.

Exemples de code client

Si vous appelez l’API à partir d’une Single-Page Application ou d’une application mobile/native, une fois le flux d’autorisation terminé, vous obtiendrez un jeton d’accès. La façon d’obtenir le jeton et d’effectuer la requête vers l’API dépend du type d’application que vous développez et du framework que vous utilisez.

Applications monopages

Quickstarts React, Vue et Angular avec exemples

Applications mobiles / natives

Quickstarts iOS, Android et React Native

Utilisation avancée

DPoP (Demonstrating Proof-of-Possession), selon la RFC 9449, offre une sécurité renforcée en empêchant le vol de jeton grâce à l’association à une clé cryptographique.
internal/auth/middleware.go
Modes DPoP :
  • DPoPAllowed (par défaut) — Accepte les jetons Bearer et DPoP
  • DPoPRequired — Accepte uniquement les jetons DPoP et rejette les jetons Bearer
  • DPoPDisabled — Accepte uniquement les jetons Bearer et rejette les jetons DPoP
DPoP est recommandé pour les API financières, les API du secteur de la santé et les applications d’entreprise hautement sécurisées. Pour en savoir plus, consultez la documentation DPoP.
Activez CORS pour autoriser les requêtes provenant d’applications web. Vous pouvez utiliser un middleware simple ou une bibliothèque comme rs/cors :
cmd/server/main.go
En production, indiquez des origines exactes au lieu d’utiliser des caractères génériques.
Activez une journalisation détaillée pour déboguer la validation de jeton :
internal/auth/middleware.go
Ajoutez une vérification au démarrage :
cmd/server/main.go

Dépannage

”Échec de la validation du JWT” ou 401 Unauthorized

Problème : L’API ne parvient pas à trouver ou à valider le jeton d’accès.Solutions :
  1. Assurez-vous que l’en-tête Authorization est présent : Authorization: Bearer YOUR_TOKEN
  2. Vérifiez que “Bearer” figure bien avant le jeton
  3. Vérifiez que le jeton n’est pas expiré
  4. Assurez-vous d’utiliser un jeton d’accès, et non un ID token

”incompatibilité de la claim aud”

Problème : L’audience du jeton ne correspond pas à celle de votre API.Solution : Vérifiez que AUTH0_AUDIENCE correspond exactement à l’identificateur de votre API dans l’Auth0 Dashboard. L’audience ne doit PAS se terminer par une barre oblique :
L’application cliente doit aussi demander un jeton avec le bon paramètre d’audience.

”méthode de signature inattendue”

Problème : L’algorithme du jeton ne correspond pas à la configuration du validateur.Solutions :
  1. Auth0 utilise RS256 par défaut (asymétrique)
  2. Assurez-vous que votre validateur utilise validator.RS256
  3. N’utilisez jamais validator.HS256 pour des jetons Auth0, sauf si cela a été configuré explicitement

Point de terminaison JWKS inaccessible

Problème : Le fournisseur de mise en cache JWKS ne parvient pas à joindre le point de terminaison de clé publique d’Auth0.Solutions :
  1. Vérifiez la connectivité réseau vers Auth0 (paramètres de pare-feu/proxy)
  2. Testez le point de terminaison JWKS manuellement : curl https://YOUR_AUTH0_DOMAIN/.well-known/jwks.json
  3. Vérifiez que la région Auth0 est correcte (us/eu/au)

Chemin d’importation incorrect

Problème : cannot find package "github.com/auth0/go-jwt-middleware/v3/..."Solution : Assurez-vous que toutes les importations utilisent le suffixe /v3 :

Erreurs liées au décalage d’horloge / jeton expiré

Problème : L’horloge du serveur n’est pas synchronisée, ce qui fait paraître expirés des jetons valides.Solution : Le validateur inclut déjà une tolérance de 30 s pour le décalage d’horloge. Si vous avez besoin de plus, ajustez :

Échec de l’extraction des claims

Problème : Failed to retrieve claims lors de l’utilisation des génériques.Solution : Assurez-vous d’utiliser le bon paramètre de type :

Prochaines étapes

Maintenant que vous disposez d’une API protégée, pensez à explorer :

Ressources