Skip to main content
Prérequis : Avant de commencer, assurez-vous d’avoir installé les éléments suivants :
  • Go 1.25 ou une version ultérieure
  • Git pour le contrôle de version
Vérifiez l’installation : go version

Pour commencer

Ce guide de démarrage rapide montre comment ajouter l’authentification Auth0 à une application web en Go. Vous créerez une application côté serveur avec des fonctionnalités de connexion, de logout et de profil utilisateur à l’aide du SDK go-auth0 et de la bibliothèque standard 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 :
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 :
  • Domain
  • Client ID
  • Client Secret
Tableau de bord de l’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 :
Créez une Auth0 App et copiez le fichier .env prérempli avec les bonnes valeurs de configuration.
Vérifiez que votre fichier .env existe : cat .env (Mac/Linux) ou type .env (Windows)
3

Créer le client Auth0

Créez le fichier 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
Ce que cela fait :
  • 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 /authorize avec les paramètres OAuth2 requis
4

Créer des gestionnaires de routes

Créez le fichier handlers.go avec des handlers pour le login, le callback, le profil utilisateur et le logout.
handlers.go
Points clés :
  • 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 appelle UserInfo pour obtenir le profil de l’utilisateur
  • LogoutHandler supprime la session et redirige vers l’endpoint /v2/logout d’Auth0
  • UserHandler récupère le profil à partir de la session et affiche le template
5

Créer des modèles HTML

templates/home.html
6

Créer le serveur principal

Rassemblez le tout dans main.go :
main.go
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 :
  1. Redirige les utilisateurs vers le Universal Login d’Auth0 pour l’authentification
  2. Échange le code d’autorisation contre des jetons à l’aide du SDK go-auth0
  3. Récupère et affiche les renseignements du profil utilisateur
  4. Prend en charge le logout et le nettoyage de la session

Utilisation avancée

Créez un middleware IsAuthenticated pour protéger les routes qui nécessitent une authentification. Ajoutez ceci à votre fichier handlers.go :
handlers.go
Appliquez le middleware aux routes protégées dans main.go :
main.go
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 :
Si votre application utilise des refresh tokens, vous pouvez échanger un refresh token contre un nouvel ensemble de jetons à l’aide du SDK go-auth0 :
Pour recevoir un refresh token, ajoutez offline_access aux scopes dans votre URL d’autorisation :

Dépannage

”É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 :
  1. Vérifiez que AUTH0_CLIENT_SECRET est correct dans votre fichier .env
  2. Assurez-vous que AUTH0_CALLBACK_URL correspond exactement aux URL de rappel autorisées dans les paramètres de votre application Auth0
  3. 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 :
  1. Assurez-vous que la portée openid est incluse dans l’URL d’autorisation
  2. Vérifiez que le jeton d’accès est valide et n’a pas expiré
  3. 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 :
  1. Assurez-vous que les cookies sont activés dans votre navigateur
  2. Vérifiez que le secret du magasin de sessions n’a pas changé entre les requêtes
  3. 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 :
  1. Vérifiez que http://localhost:3000 figure dans les URL de déconnexion autorisées dans les paramètres de votre application Auth0
  2. Assurez-vous que le paramètre client_id correspond à l’ID client de votre application
  3. Vérifiez que l’URL returnTo correspond 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 :
  1. Assurez-vous que gob.Register(map[string]interface{}{}) est appelé avant d’enregistrer les données
  2. Vérifiez que session.Save(r, w) est appelé après la modification des valeurs de session
  3. Vérifiez que les cookies ne sont pas bloqués par les paramètres du navigateur

Prochaines étapes

Maintenant que l’authentification fonctionne, pensez aussi à explorer :

Ressources