Skip to main content
Auth0 vous permet d’ajouter l’authentication à votre application ASP.NET OWIN en quelques minutes. Ce guide vous explique comment ajouter la connexion, le logout et l’affichage du profil utilisateur à une application ASP.NET OWIN classique. À la fin de ce guide, votre application pourra :
  • Rediriger les utilisateurs vers Auth0 Universal Login lorsqu’ils se connectent
  • Traiter le callback et stocker la session dans un cookie
  • Afficher le nom, l’adresse courriel et la photo de profil de l’utilisateur authentifié
  • Déconnecter les utilisateurs à la fois de votre application et d’Auth0
Ce guide s’adresse aux applications ASP.NET classiques (.NET Framework) qui utilisent OWIN. Si votre application fonctionne déjà avec ASP.NET Core, utilisez plutôt le SDK Auth0.AspNetCore.Authentication.

Prérequis

Avant de commencer :
  • Un compte Auth0 - inscrivez-vous gratuitement
  • Une application ASP.NET MVC existante qui cible .NET Framework avec OWIN activé, ou une nouvelle application créée à partir du modèle ASP.NET Web Application (.NET Framework) → MVC dans Visual Studio
  • Visual Studio 2019 ou une version ultérieure (ou tout IDE compatible avec les projets MVC .NET Framework)

Étapes

1

Configurer votre application Auth0

Toute application qui utilise Auth0 doit être enregistrée dans le Auth0 Dashboard. Auth0 fournit un Client ID et un Domain que votre application utilise pour communiquer avec Auth0.Vous pouvez choisir de configurer votre application Auth0 automatiquement en exécutant une commande de l’Auth0 CLI, ou manuellement via le Dashboard :
Exécutez la commande suivante depuis le répertoire racine de votre projet pour créer une application Auth0 et générer les valeurs de votre Web.config :
Cette commande permet de :
  1. Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
  2. Créer une Auth0 Regular Web Application configurée pour http://localhost:5000
  3. Générer les valeurs Web.config avec auth0:Domain, auth0:ClientId et auth0:ClientSecret
Si votre application fonctionne sur un autre port, remplacez 3000 par votre numéro de port dans chaque URL ci-dessus.
2

Installer des packages NuGet

Ajoutez à votre projet les deux packages middleware OWIN requis :
Dans Visual Studio, ouvrez la Console du gestionnaire de package (Tools → NuGet Package Manager → Package Manager Console) et exécutez :
L’utilisation simultanée du middleware de cookies OWIN et des cookies System.Web peut entraîner des problèmes. Si vous rencontrez des problèmes de double cookie, consultez les directives sur les problèmes d’intégration des cookies System.Web.
3

Configurer le middleware OWIN

Le middleware OWIN est enregistré dans une classe de démarrage. Si votre projet possède déjà une classe de démarrage OWIN (généralement App_Start/Startup.Auth.cs), mettez à jour sa méthode ConfigureAuth. Sinon, créez ce fichier maintenant.Le cookie middleware et le middleware OpenID Connect sont tous deux nécessaires, et ils doivent être enregistrés exactement dans cet ordre :
  1. Cookie middleware - stocke la session authentifiée de l’utilisateur
  2. Middleware OpenID Connect - gère la connexion avec Auth0 et le processus de déconnexion
App_Start/Startup.Auth.cs
Assurez-vous que ConfigureAuth est appelé dans la méthode Configuration de votre Startup.cs :
Startup.cs
AuthenticationType est défini sur "Auth0". Cette chaîne est utilisée à l’étape suivante, au moment de déclencher le défi de connexion. La notification RedirectToIdentityProvider intercepte les requêtes de logout et construit l’URL de logout Auth0 appropriée.
4

Ajouter des actions de connexion, de logout et de profil

Créez Controllers/AccountController.cs avec trois actions : Login, Logout et UserProfile.
Controllers/AccountController.cs
Fonctionnement de chaque action :
  • Login - appelle Challenge avec le schéma "Auth0". Le middleware OIDC l’intercepte et redirige l’utilisateur vers Auth0 Universal Login. Après une connexion réussie, l’utilisateur est redirigé vers returnUrl.
  • UserProfile - lit les claims de l’utilisateur authentifié à partir de ClaimsIdentity et les transmet à la vue via UserProfileViewModel. L’attribut [Authorize] garantit que les utilisateurs non authentifiés sont d’abord redirigés vers la page de connexion.
  • Logout - appelle SignOut deux fois : une fois pour effacer le cookie de session local, et une autre pour déconnecter l’utilisateur d’Auth0 (ce qui met aussi fin à toute session SSO active).
Créez Models/UserProfileViewModel.cs pour stocker les données du profil :
Models/UserProfileViewModel.cs
Vérification
Exécutez votre application et accédez à /Account/Login. Vous devriez être redirigé vers la page Auth0 Universal Login. Après vous être connecté, vous devriez être redirigé vers la page d’accueil de votre application. Si vous voyez une erreur de Redirect URI, vérifiez que l’URL de rappel dans les paramètres de votre application Auth0 correspond exactement à l’URL sur laquelle votre application s’exécute.
5

Ajouter une vue de profil

Créez Views/Account/UserProfile.cshtml pour afficher les informations de l’utilisateur connecté :
Views/Account/UserProfile.cshtml
La vue reçoit un UserProfileViewModel alimenté par les claims extraits par le middleware OIDC lorsqu’Auth0 renvoie l’ID token.
Vérification
Après vous être connecté, accédez à /Account/UserProfile. Vous devriez voir votre nom, votre courriel et votre photo de profil. Si le nom ou le courriel est vide, vérifiez que le Scope dans votre OpenIdConnectAuthenticationOptions comprend "openid profile email".
6

Ajoutez des liens de connexion et de déconnexion à votre layout

Mettez à jour Views/Shared/_Layout.cshtml pour afficher les liens de connexion et de déconnexion en fonction de l’état d’authentification de l’utilisateur :
Views/Shared/_Layout.cshtml
Ajoutez ceci à l’intérieur de l’élément <nav>, à l’endroit où vos liens de navigation apparaissent dans la mise en page.
Checkpoint
Exécutez votre application. Vous devriez voir un lien Se connecter dans la navigation. Après la connexion, il devrait être remplacé par votre nom (avec un lien vers votre profil) ainsi qu’un lien Se déconnecter. En cliquant sur Se déconnecter, vous devriez être déconnecté et redirigé vers la page d’accueil.
Vous avez maintenant une intégration Auth0 fonctionnelle dans votre application ASP.NET OWIN. Les utilisateurs peuvent se connecter au moyen d’Auth0 Universal Login, consulter leur profil et se déconnecter.

Problèmes courants

Problème : Auth0 affiche une erreur « redirect_uri mismatch » ou « callback URL mismatch » après la connexion de l’utilisateur.Solution : La Redirect URI que votre app envoie à Auth0 doit correspondre exactement à l’une des Allowed Callback URLs dans les paramètres de votre application Auth0. Vérifiez toute différence dans le protocole (http vs https), le numéro de port, le chemin et les barres obliques finales.
Problème : Après une connexion réussie, l’app redirige immédiatement vers Auth0 au lieu d’afficher la page authentifiée.Solution : Assurez-vous que le middleware est enregistré dans le bon ordre et que le pipeline OWIN est bien initialisé :
  • Le cookie middleware doit être enregistré avant le middleware OpenID Connect dans ConfigureAuth.
  • app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType) doit être le premier appel dans ConfigureAuth.
  • L’attribut [assembly: OwinStartup(typeof(Startup))] doit être présent pour que le pipeline OWIN soit correctement initialisé.
App_Start/Startup.Auth.cs
Problème : Cliquer sur Log out déconnecte l’utilisateur d’Auth0, mais ne le redirige pas vers votre application.Solution : Ajoutez un query parameter returnTo à la logout URL d’Auth0 dans la notification RedirectToIdentityProvider. L’URL de retour doit aussi figurer dans Allowed Logout URLs dans les paramètres de votre application Auth0 :
App_Start/Startup.Auth.cs
Problème : Model.ProfileImage ou Model.EmailAddress est null après la connexion.Solution : Vérifiez que Scope dans OpenIdConnectAuthenticationOptions inclut "openid profile email". La portée profile fournit le nom et l’image; la portée email fournit l’adresse courriel.
App_Start/Startup.Auth.cs
Problème : L’application génère une exception de référence null ou de configuration au démarrage.Solution : Assurez-vous que auth0:Domain et auth0:ClientId sont tous deux présents dans <appSettings> de Web.config, et que vous exécutez la bonne configuration de build (Debug/Release) pour charger la bonne transformation Web.config.
Web.config

Utilisation avancée

Vous pouvez transmettre des paramètres personnalisés à la page de connexion Auth0 en modifiant la notification RedirectToIdentityProvider dans Startup.Auth.cs :
App_Start/Startup.Auth.cs
Pour appeler une API avec un jeton d’accès, demandez une audience et les portées d’API requises lors de la redirection OIDC :
App_Start/Startup.Auth.cs
Récupérez ensuite le jeton d’accès à partir des claims de l’utilisateur authentifié :
Controllers/ApiController.cs

Ressources supplémentaires

Exemple d’application

Exemple complet et fonctionnel de ce Quickstart

Documentation Katana / OWIN

Référence officielle de Microsoft sur OWIN/Katana

Forum de la communauté

Obtenez de l’aide auprès de la communauté Auth0