Ajouter une fonctionnalité de connexion à votre application Go
Auth0 vous permet d’ajouter l’authentification et de pouvoir accéder aux informations relatives au profil de l’utilisateur dans votre application. Ce guide explique comment intégrer Auth0 à n’importe quelle application Web Go, nouvelle ou existante.
Pour utiliser les services Auth0, vous devez avoir une application installée dans Auth0 Dashboard. L’application Auth0 est l’endroit où vous allez configurer le fonctionnement de l’authentification pour le projet que vous développez.
Configurer une application
Utilisez le sélecteur interactif pour créer une nouvelle application Auth0 ou sélectionner une application existante qui représente le projet avec lequel vous souhaitez effectuer l’intégration. Dans Auth0, chaque application se voit attribuer un identifiant client unique alphanumérique que votre code d’application utilisera pour appeler les API Auth0 via la trousse SDK.
Tous les paramètres que vous configurez à l’aide de ce guide de démarrage rapide seront automatiquement mis à jour pour votre application dans le Tableau de bord, qui est l’endroit où vous pourrez gérer vos applications à l’avenir.
Si vous préférez explorer une configuration complète, consultez plutôt un exemple d’application.
Configuration des URL de rappel
Une URL de rappel est une URL intégrée dans votre application vers laquelle vous souhaitez qu’Auth0 redirige les utilisateurs après leur authentification. Si elle n’est pas définie, les utilisateurs ne seront pas redirigés vers votre application après s’être connectés.
Configuration des URL de déconnexion
Une URL de déconnexion est une URL intégrée dans votre application vers laquelle vous souhaitez qu’Auth0 redirige les utilisateurs après leur déconnexion. Si elle n’est pas définie, les utilisateurs ne pourront pas se déconnecter de votre application et recevront un message d’erreur.
Créez un fichier go.mod
pour lister toutes les dépendances de votre application.
Pour intégrer Auth0 dans une application Go, ajoutez les packages coreos/go-oidc/v3
et x/oauth2
.
En plus des packages OIDC et OAuth2, ajoutez joho/godotenv
, gin-gonic/gin
, et gin-contrib/sessions
.
Enregistrez le fichier go.mod
avec les dépendances nécessaires et installez-les en utilisant la commande suivante dans votre terminal :
go mod download
Vous devez définir les variables d’environnement suivantes dans .env
à la racine de votre répertoire de projet :
AUTH0_DOMAIN : Le domaine de votre locataire Auth0. Trouvez votre domaine Auth0 dans Auth0 Dashboard sous les paramètres de votre application dans le champ Domain (Domaine). Pour les domaines personnalisés, définissez-le plutôt sur la valeur de votre domaine personnalisé.
AUTH0_CLIENT_ID : L’identificateur de l’application Auth0 que vous avez configurée précédemment dans ce guide rapide. Vous le trouverez dans Auth0 Dashboard sous les paramètres de votre application dans le champ Client ID (Identificateur client).
AUTH0_CLIENT_SECRET : Le secret de l’application Auth0 que vous avez configurée précédemment dans ce guide rapide. Vous le trouverez dans Auth0 Dashboard, sous les paramètres de votre application dans le champ Client Secret (Secret client).
AUTH0_CALLBACK_URL : L’URL utilisée par Auth0 pour rediriger l’utilisateur après une authentification réussie.
Ensuite, configurez les packages OAuth2 et OpenID Connect
Créez un fichier nommé auth.go
dans le dossier platform/authenticator
. Dans ce package, créez une méthode pour configurer et renvoyer les clients OAuth2 et OIDC, et une autre pour vérifier un jeton d’ID.
Créez un fichier nommé router.go
dans le dossier platform/router
. Dans ce package, créez une méthode pour configurer et renvoyer nos routes en utilisant github.com/gin-gonic/gin. Vous passerez une instance de Authenticator
à la méthode pour l’utiliser avec les gestionnaires login (connexion)
et callback (rappel)
.
Pour que l’utilisateur s’authentifie, nous devons créer une fonction gestionnaire pour traiter la route/login
.
Créez un fichier nommé login.go
dans le dossier web/app/login
et ajoutez une fonction Handler
. Lors de l’exécution du gestionnaire, l’utilisateur sera redirigé vers Auth0 où il pourra saisir ses identifiants.
Pour appeler la route /login
ajoutez un lien vers /login
dans le modèle home.html
situé dans le directory web/template
.
Une fois que les utilisateurs se sont authentifiés en utilisant la page de connexion universelle d’Auth0, ils reviendront à l’application à la route /callback
.
Créez un fichier nommé callback.go
dans le dossier web/app/callback
et ajoutez une fonction Handler
.
Ce gestionnaire prendra la chaîne de requête code
fournie par Auth0 et l’échangera contre un jeton d’ID et un jeton d’accès.
Si le jeton d’ID est valide, il stockera les informations de profil et le jeton d’accès dans la session. Les informations de profil sont basées sur les demandes contenues dans le jeton d’ID. Le stockage de session permet à l’application d’accéder à ces informations selon les besoins.
Maintenant que vos utilisateurs peuvent se connecter, vous voulez probablement pouvoir récupérer et utiliser les informations de profil associées aux utilisateurs authentifiés.
Vous pouvez accéder à ces informations de profil, telles que leur pseudonyme ou leur photo de profil, à partir du profile
qui a été sauvegardé dans la session précédemment.
Créez un gestionnaire pour le point de terminaison /user
dans web/app/user/user.go
et renvoyez le fichier HTML correspondant. Comme le profile
passe à ctx.HTML()
, vous pouvez accéder aux informations de profil, telles que picture
et nickname
à l’intérieur de ce même fichier HTML.
Un exemple de fichier HTML de ce type pourrait ressembler à l’exemple ci-dessous, mais vous pouvez récupérer n’importe quelle information de profil, y compris des demandes personnalisées.
Pour déconnecter l’utilisateur, effacez les données de la session et redirigez l’utilisateur vers le point de terminaison de déconnexion Auth0. Vous trouverez plus d’informations à ce sujet dans la documentation sur la déconnexion.
Créez un fichier nommé logout.go
dans le dossier web/app/logout
, et ajoutez la fonction Handler
pour rediriger l’utilisateur vers le point de terminaison de déconnexion Auth0.
L’URL returnTo
doit figurer dans la liste des URL de déconnexion autorisées de la section des paramètres de l’application. Pour plus d’informations, consultez Rediriger les utilisateurs après la déconnexion.
Créez un fichier nommé user.js
dans le dossier web/static/js
, et ajoutez le code pour supprimer le témoin d’un utilisateur connecté.
La pratique recommandée veut que certaines routes ne soient accessibles qu’aux utilisateurs authentifiés. Lorsque des utilisateurs non authentifiés essaient d’accéder à des routes protégées, votre application devrait les rediriger.
Dans ce cas, vous devez mettre en œuvre un intergiciel pour accéder à la requête HTTP. La fonction d’intergiciel détermine si la requête doit être dirigée vers le gestionnaire de point de terminaison ou si elle doit être bloquée.
Créez un fichier nommé isAuthenticated.go
dans platform/middleware
et ajoutez une fonction qui vérifie si l’utilisateur est authentifié ou non, en fonction de la clé de session de profile
. Si l’utilisateur n’est pas authentifié, l’intergiciel le redirigera vers la racine de l’application.
L’intergiciel créé, nous pouvons le configurer pour toute route nécessitant une authentification en l’ajoutant au routeur.
L’authentificateur et le routeur configurés, nous pouvons connecter les éléments à l’aide du point d’entrée de notre application. Dans main.go
, créez une instance de l’authentificateur et du routeur, qui reçoit l’instance de l’authentificateur.
Si vous utilisez un fichier .env
, vous devez appeler godotenv.Load()
au tout début de la fonction main()
.
Lancez votre application en utilisant la commande suivante dans votre terminal :
go run main.go
Next Steps
Excellent work! If you made it this far, you should now have login, logout, and user profile information running in your application.
This concludes our quickstart tutorial, but there is so much more to explore. To learn more about what you can do with Auth0, check out:
- Auth0 Dashboard - Learn how to configure and manage your Auth0 tenant and applications
- Auth0 Marketplace - Discover integrations you can enable to extend Auth0’s functionality
Sign up for an or to your existing account to integrate directly with your own tenant.