Pour commencer
net/http de Go.
Créer un projet
Créez un nouveau répertoire pour votre application Go, puis initialisez un module.Installez les dépendances requises :Créez la structure du projet :
Voir le fichier go.mod attendu
Voir le fichier go.mod attendu
go.mod
Configurez votre application Auth0
Pour utiliser les services Auth0, vous devez d’abord configurer une application dans l’Auth0 Dashboard. C’est dans cette application Auth0 que vous configurez l’authentification pour votre projet.Vous aurez besoin des renseignements suivants dans l’onglet Settings de votre application :
Vous avez trois options pour configurer votre application Auth0 : utiliser l’outil Quick Setup (recommandé), exécuter une commande CLI ou faire la configuration manuellement dans l’Auth0 Dashboard :
- Domaine
- ID client
- Secret client

- Quick Setup (recommandé)
- CLI
- Auth0 Dashboard
Créez une application Auth0 et copiez le fichier
.env prérempli avec les bonnes valeurs de configuration.Créer l’application Auth0
Créez le fichier Ce que cela fait :
auth.go. Il encapsule le client d’authentification go-auth0 et fournit une fonction utilitaire pour générer l’URL d’autorisation.auth.go
- Initialise le client d’authentification
go-auth0avec le domaine de votre locataire, l’ID client et le secret client - Fournit un utilitaire
AuthorizationURLqui génère l’URL de redirection/authorizeavec les paramètres OAuth2 requis
Créer des gestionnaires de routes
Créez le fichier Points clés :
handlers.go avec des gestionnaires pour la connexion, le rappel, le profil utilisateur et la déconnexion.handlers.go
- LoginHandler génère un paramètre state aléatoire pour se protéger contre les attaques CSRF et redirige vers l’Universal Login d’Auth0
- CallbackHandler échange le code d’autorisation contre des jetons au moyen de
go-auth0, puis appelleUserInfopour obtenir le profil de l’utilisateur - LogoutHandler supprime la session et redirige vers le point de terminaison
/v2/logoutd’Auth0 - UserHandler récupère le profil de la session et effectue le rendu du gabarit
Exécutez votre application et testez-la
Démarrez le serveur de développement :Vous devriez voir :
Server listening on http://localhost:3000/Ouvrez http://localhost:3000 dans votre navigateur. Cliquez sur Sign In pour être redirigé vers la page Universal Login d’Auth0. Une fois authentifié, vous serez redirigé vers votre application, où les renseignements de votre profil s’afficheront.Si le port 3000 est déjà utilisé, mettez à jour
AUTH0_CALLBACK_URL dans votre fichier .env, ainsi que Allowed Callback URLs et Allowed Logout URLs dans les paramètres de votre application Auth0, pour utiliser le nouveau port.Point de contrôleVous devriez maintenant avoir une application Web Go entièrement fonctionnelle avec l’authentification Auth0, en cours d’exécution sur votre localhost. Votre application :
- Redirige les utilisateurs vers Universal Login d’Auth0 pour s’authentifier
- Échange le code d’autorisation contre des jetons à l’aide du SDK
go-auth0 - Récupère et affiche les renseignements du profil de l’utilisateur
- Prend en charge la déconnexion et le nettoyage de la session
Utilisation avancée
Protéger les routes avec un middleware
Protéger les routes avec un middleware
Créez un middleware Appliquez le middleware aux routes protégées dans
IsAuthenticated pour protéger les routes qui nécessitent une authentification. Ajoutez ceci à votre fichier handlers.go :handlers.go
main.go :main.go
Appeler une API protégée
Appeler une API protégée
Après l’authentification, le jeton d’accès stocké dans la session peut être utilisé pour appeler une API protégée :
Pour demander un jeton d’accès destiné à votre API, ajoutez le paramètre
audience à l’URL d’autorisation dans auth.go :Actualisation des jetons
Actualisation des jetons
Si votre application utilise des jetons d’actualisation, vous pouvez échanger un jeton d’actualisation contre un nouvel ensemble de jetons à l’aide du SDK Pour recevoir un jeton d’actualisation, ajoutez
go-auth0 :offline_access aux scopes dans votre URL d’autorisation :Dépannage
Problèmes courants et solutions
Problèmes courants et solutions
”Échec de l’échange du code d’autorisation contre un jeton”
Problème : Le gestionnaire de rappel ne parvient pas à échanger le code d’autorisation.Solutions :- Vérifiez que
AUTH0_CLIENT_SECRETest correct dans votre fichier.env - Assurez-vous que
AUTH0_CALLBACK_URLcorrespond exactement aux Allowed Callback URLs dans les paramètres de votre application Auth0 - Vérifiez que le code d’autorisation n’a pas expiré (les codes sont à usage unique et valides pendant peu de temps)
“Impossible de récupérer les renseignements de l’utilisateur”
Problème : Le point de terminaison/userinfo renvoie une erreur.Solutions :- Assurez-vous que le scope
openidest inclus dans l’URL d’autorisation - Vérifiez que le jeton d’accès est valide et n’a pas expiré
- Vérifiez la connectivité réseau vers votre Domaine Auth0
”Paramètre state non valide”
Problème : Le paramètrestate dans le rappel ne correspond pas à la session.Solutions :- Assurez-vous que les cookies sont activés dans votre navigateur
- Vérifiez que le secret du magasin de sessions n’a pas changé entre les requêtes
- Vérifiez que vous n’utilisez pas plusieurs onglets de navigateur pendant le flux de connexion
Les utilisateurs ne peuvent pas se déconnecter
Problème : Après avoir cliqué sur Déconnexion, les utilisateurs voient une page d’erreur Auth0.Solutions :- Vérifiez que
http://localhost:3000figure dans les Allowed Logout URLs dans les paramètres de votre application Auth0 - Assurez-vous que le paramètre
client_idcorrespond à l’ID client de votre application - Vérifiez que l’URL
returnTocorrespond exactement à l’une des URL de déconnexion autorisées
Les données de session ne persistent pas
Problème : Les données de profil de l’utilisateur disparaissent entre les requêtes.Solutions :- Assurez-vous que
gob.Register(map[string]interface{}{})est appelé avant de stocker les données - Vérifiez que
session.Save(r, w)est appelé après avoir modifié les valeurs de session - Vérifiez que les cookies ne sont pas bloqués par les paramètres du navigateur
Prochaines étapes
- Profils utilisateur — Découvrez les informations sur l’utilisateur disponibles après l’authentification
- Configurer d’autres fournisseurs d’identité — Ajoutez des options de connexion sociale ou d’entreprise
- Activer l’authentification multifacteur — Ajoutez une couche de sécurité supplémentaire
- Bonnes pratiques relatives aux jetons d’accès — Découvrez les bonnes pratiques de sécurité des jetons
- Liste de contrôle pour la production — Révision de sécurité avant le lancement
Ressources
- go-auth0 GitHub — Code source et documentation
- Go Web App Sample — Exemple complet prêt à l’emploi
- Auth0 Community — Obtenez de l’aide auprès de la communauté