Pour commencer
net/http de Go.
1
Créer un nouveau 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
2
Configurez votre application Auth0
Pour utiliser les services Auth0, vous devez avoir une application configurée dans l’Auth0 Dashboard. L’application Auth0 est l’endroit où vous configurez l’authentification de votre projet.Vous avez besoin des renseignements suivants dans l’onglet Settings de votre application :
Vous avez trois options pour configurer votre application Auth0 : utiliser l’outil de configuration rapide (recommandé), exécuter une commande CLI ou faire la configuration manuellement dans le Dashboard :
- Domain
- Client ID
- Client Secret

- Configuration rapide (recommandée)
- CLI
- Dashboard
Créez une Auth0 App et copiez le fichier
.env prérempli avec les bonnes valeurs de configuration.3
Créer le client Auth0
Créez le fichier Ce que cela fait :
auth.go. Ce fichier 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-auth0à l’aide du domaine de votre tenant, de l’ID client et du secret client - Fournit l’utilitaire
AuthorizationURL, qui génère l’URL de redirection/authorizeavec les paramètres OAuth2 requis
4
Créer des gestionnaires de routes
Créez le fichier Points clés :
handlers.go avec des handlers pour le login, le callback, le profil utilisateur et le logout.handlers.go
- LoginHandler génère un paramètre state aléatoire pour se protéger contre les attaques CSRF et redirige vers Universal Login d’Auth0
- CallbackHandler échange le code d’autorisation contre des jetons à l’aide de
go-auth0, puis appelleUserInfopour obtenir le profil de l’utilisateur - LogoutHandler supprime la session et redirige vers l’endpoint
/v2/logoutd’Auth0 - UserHandler récupère le profil à partir de la session et affiche le template
5
Créer des modèles HTML
- home.html
- user.html
templates/home.html
6
Créer le serveur principal
Rassemblez le tout dans
main.go :main.go
Structure du projet
Structure du projet
7
Exécutez et testez votre application
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. Après vous être authentifié, vous serez redirigé vers votre application et verrez les informations de votre profil.Si le port 3000 est déjà utilisé, mettez à jour le
AUTH0_CALLBACK_URL dans votre fichier .env, ainsi que les Allowed Callback URLs et les Allowed Logout URLs dans les Application Settings de votre application Auth0 afin d’utiliser le nouveau port.VérificationVous devriez maintenant disposer d’une application Web Go entièrement fonctionnelle avec l’authentification Auth0, qui s’exécute sur votre localhost. Votre application :
- Redirige les utilisateurs vers le Universal Login d’Auth0 pour l’authentification
- Échange le code d’autorisation contre des jetons à l’aide du SDK
go-auth0 - Récupère et affiche les renseignements du profil utilisateur
- Prend en charge le logout et le nettoyage de la session
Utilisation avancée
Protéger des routes à l’aide d’un middleware
Protéger des routes à l’aide d’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 :Actualiser les jetons
Actualiser les jetons
Si votre application utilise des refresh tokens, vous pouvez échanger un refresh token contre un nouvel ensemble de jetons à l’aide du SDK Pour recevoir un refresh token, 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 handler de rappel ne peut 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 URL de rappel autorisées 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 de courte durée)
“Échec de la récupération des informations utilisateur”
Problème : Le endpoint/userinfo renvoie une erreur.Solutions :- Assurez-vous que la portée
openidest incluse 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 invalide”
Problème : Le paramètre state 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 logout, les utilisateurs voient une page d’erreur Auth0.Solutions :- Vérifiez que
http://localhost:3000figure dans les URL de déconnexion autorisées 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 sont pas enregistrées
Problème : Les données du profil utilisateur disparaissent entre les requêtes.Solutions :- Assurez-vous que
gob.Register(map[string]interface{}{})est appelé avant d’enregistrer les données - Vérifiez que
session.Save(r, w)est appelé après la modification des 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 renseignements sur l’utilisateur accessibles après l’authentification
- Configurer d’autres fournisseurs d’identité — Ajoutez des options de connexion sociale ou d’entreprise
- Activer l’authentification multifactorielle — Ajoutez un niveau de sécurité supplémentaire
- Bonnes pratiques pour les jetons d’accès — Découvrez les bonnes pratiques de sécurité des jetons
- Liste de vérification pour la production — Révision de sécurité avant le lancement
Ressources
- go-auth0 GitHub — Code source et documentation
- Exemple d’application Web Go — Exemple complet et fonctionnel
- Auth0 Community — Obtenez de l’aide auprès de la communauté