Passer au contenu principal
Prérequis : Avant de commencer, assurez-vous d’avoir installé les éléments suivants :
  • Go 1.25 ou une version ultérieure
  • Git pour la gestion de versions
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 déconnexion et de profil utilisateur à l’aide du SDK go-auth0 et de la bibliothèque standard net/http de Go.
1

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 :
go.mod
2

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 :
  • Domaine
  • ID client
  • Secret client
Tableau de bord de l’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 :
Créez une application Auth0 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 l’application Auth0

Créez le fichier 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
Ce que cela fait :
  • Initialise le client d’authentification go-auth0 avec le domaine de votre locataire, l’ID client et le secret client
  • Fournit un 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 gestionnaires pour la connexion, le rappel, le profil utilisateur et la déconnexion.
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 l’Universal Login d’Auth0
  • CallbackHandler échange le code d’autorisation contre des jetons au moyen de go-auth0, puis appelle UserInfo pour obtenir le profil de l’utilisateur
  • LogoutHandler supprime la session et redirige vers le point de terminaison /v2/logout d’Auth0
  • UserHandler récupère le profil de la session et effectue le rendu du gabarit
5

Créer des gabarits HTML

templates/home.html
6

Créez le serveur principal

Assemblez le tout dans main.go :
main.go
7

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 :
  1. Redirige les utilisateurs vers Universal Login d’Auth0 pour s’authentifier
  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 de l’utilisateur
  4. Prend en charge la déconnexion 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 jetons d’actualisation, vous pouvez échanger un jeton d’actualisation contre un nouvel ensemble de jetons à l’aide du SDK go-auth0 :
Pour recevoir un jeton d’actualisation, 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 gestionnaire de rappel ne parvient 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 Allowed Callback URLs 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 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 :
  1. Assurez-vous que le scope openid est inclus 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 non valide”

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 Déconnexion, les utilisateurs voient une page d’erreur Auth0.Solutions :
  1. Vérifiez que http://localhost:3000 figure dans les Allowed Logout URLs 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 persistent pas

Problème : Les données de profil de l’utilisateur disparaissent entre les requêtes.Solutions :
  1. Assurez-vous que gob.Register(map[string]interface{}{}) est appelé avant de stocker les données
  2. Vérifiez que session.Save(r, w) est appelé après avoir modifié les 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, vous pouvez aussi consulter :

Ressources