Utilisez l’IA pour intégrer Auth0
Utilisez l’IA pour intégrer Auth0
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 →Pour commencer
net/http de Go.
Voir l’exemple sur GitHub
Créer un nouveau projet
Voir le fichier go.mod attendu
Voir le fichier go.mod attendu
Configurez votre API Auth0
- CLI
- Dashboard
.env :- Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
- Créer une API Auth0 avec l’identifiant spécifié
- Afficher les détails de l’API, y compris le domaine et l’identifiant
Définir les permissions d’API
read aux gestionnaires et l’accès write aux administrateurs.- Dans les paramètres de votre API, cliquez sur l’onglet Permissions
- Créez la permission suivante :
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.Créer un chargeur de configuration
- 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
Créer des revendications personnalisées et un validateur JWT
- claims.go
- validator.go
- La méthode
Validateest appelée automatiquement par le middleware après l’analyse du JWT HasScopeanalyse 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
Créer un middleware HTTP et des gestionnaires
- middleware.go
- api.go
- Public (
/api/public) — Aucune authentification requise - Privé (
/api/private) — JWT valide requis - Avec permission (
/api/private-scoped) — JWT valide + permissionread:messagesrequise
Créer le serveur principal
Structure du projet
Structure du projet
Lancez et testez votre API
Server starting on :8080Testez le point de terminaison public (aucune authentification requise) :read:messages) :- Accepte les requêtes vers les points de terminaison publics sans authentification
- Rejette les requêtes vers les points de terminaison protégés sans jeton valide
- Valide les jetons JWT en fonction de votre domaine Auth0 et de votre audience
- Applique un contrôle d’accès basé sur les permissions à l’aide des scopes
Appeler votre API
Authorization en tant que jeton Bearer.
Exemples de code client
Exemples de code client
Obtenir un jeton d’accès
Obtenir un jeton d’accès
- Applications monopages ou mobiles
- Machine-to-Machine (M2M)
Applications monopages
Applications mobiles / natives
Utilisation avancée
Sécurité DPoP (Proof-of-Possession)
Sécurité DPoP (Proof-of-Possession)
DPoPAllowed(par défaut) — Accepte les jetons Bearer et DPoPDPoPRequired— Accepte uniquement les jetons DPoP et rejette les jetons BearerDPoPDisabled— Accepte uniquement les jetons Bearer et rejette les jetons DPoP
Configuration CORS
Configuration CORS
Journalisation structurée avec slog
Journalisation structurée avec slog
Dépannage
Problèmes courants et solutions
Problèmes courants et solutions
”É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 :- Assurez-vous que l’en-tête
Authorizationest présent :Authorization: Bearer YOUR_TOKEN - Vérifiez que “Bearer” figure bien avant le jeton
- Vérifiez que le jeton n’est pas expiré
- 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 queAUTH0_AUDIENCE correspond exactement à l’identificateur de votre API dans l’Auth0 Dashboard. L’audience ne doit PAS se terminer par une barre oblique :”méthode de signature inattendue”
Problème : L’algorithme du jeton ne correspond pas à la configuration du validateur.Solutions :- Auth0 utilise RS256 par défaut (asymétrique)
- Assurez-vous que votre validateur utilise
validator.RS256 - N’utilisez jamais
validator.HS256pour 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 :- Vérifiez la connectivité réseau vers Auth0 (paramètres de pare-feu/proxy)
- Testez le point de terminaison JWKS manuellement :
curl https://YOUR_AUTH0_DOMAIN/.well-known/jwks.json - 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
- Contrôle d’accès basé sur les rôles — Mettez en place des permissions granulaires
- Bonnes pratiques pour les jetons d’accès — Découvrez la sécurité des jetons
- Surveillez votre API — Configurez la journalisation et la surveillance
- Vérifications de préparation à la production — Vérification de sécurité avant le lancement
Ressources
- go-jwt-middleware GitHub — Code source, exemples et prise en charge de DPoP
- Go API Sample — Exemple complet fonctionnel
- Auth0 Community — Obtenez de l’aide auprès de la communauté