Utiliser l’IA pour intégrer Auth0
Utiliser l’IA pour intégrer Auth0
go-jwt-middleware, configurera le validateur et protégera les points de terminaison de votre API en validant les JWT. Documentation complète sur les agent skills →Premiers pas
net/http de Go.
Voir l’exemple sur GitHub
Créer un nouveau projet
Afficher le go.mod attendu
Afficher le 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 de l’API
read aux gestionnaires et l’autorisation write aux administrateurs.- Dans les paramètres de votre API, cliquez sur l’onglet Permissions
- Créez l’autorisation suivante :
| Autorisation | Description |
|---|---|
read:messages | Lire les messages à partir de l’API |
read:messages pour protéger le point de terminaison protégé par un scope. Vous pouvez définir des autorisations 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
- Vérifie au démarrage que la configuration requise est présente
- Retourne une structure de configuration typée pouvant être utilisée dans toute l’application
Créer des claims personnalisés 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és par des espaces pour le contrôle d’accès basé sur les autorisations- Le validateur utilise la mise en cache JWKS (TTL de 5 min) et autorise un décalage d’horloge de 30 s
- L’algorithme RS256 est défini explicitement pour prévenir les attaques de confusion d’algorithme
Créer des middleware et des gestionnaires HTTP
- middleware.go
- api.go
- Public (
/api/public) — Aucune authentification requise - Privé (
/api/private) — JWT valide requis - Avec scope (
/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 des points de terminaison publics sans authentification
- Rejette les requêtes vers des 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 autorisations à l’aide des scopes
Appeler votre API
Authorization sous forme de jeton Bearer.
Exemples de code d’application
Exemples de code d’application
Obtenir un jeton d’accès
Obtenir un jeton d’accès
- Applications monopages ou mobiles
- Machine à machine (M2M)
Applications monopages
Applications mobiles / natives
Utilisation avancée
Sécurité DPoP (preuve de possession)
Sécurité DPoP (preuve de possession)
DPoPAllowed(par défaut) — Accepte à la fois 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
”Failed to validate 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
Bearerfigure avant le jeton - Vérifiez que le jeton n’est pas expiré
- Assurez-vous d’utiliser un jeton d’accès, et non un jeton d’identité
”aud claim mismatch”
Problème : L’audience du jeton ne correspond pas à votre API.Solution : Vérifiez queAUTH0_AUDIENCE correspond exactement à l’identifiant de votre API dans l’Auth0 Dashboard. L’audience ne doit PAS se terminer par une barre oblique :audience.”unexpected signing method”
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 spécifie
validator.RS256 - N’utilisez jamais
validator.HS256pour les jetons Auth0, sauf si cela a été configuré explicitement
Point de terminaison JWKS inaccessible
Problème : Le fournisseur de mise en cache JWKS ne peut 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 manuellement le point de terminaison JWKS :
curl https://YOUR_AUTH0_DOMAIN/.well-known/jwks.json - Vérifiez que vous utilisez la bonne région Auth0 (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 :Décalage d’horloge / erreurs de 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-la :É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 — Implémentez des permissions granulaires
- Bonnes pratiques des jetons d’accès — Découvrez la sécurité des jetons
- Surveiller votre API — Configurez la journalisation et la surveillance
- Liste de vérification de mise en production — Vérifiez la sécurité avant le lancement
Ressources
- go-jwt-middleware GitHub — Code source, exemples et prise en charge de DPoP
- Go API Sample — Exemple complet prêt à l’emploi
- Auth0 Community — Obtenez de l’aide auprès de la communauté