- 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
Auth0.AspNetCore.Authentication.Prérequis
- 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
Configurer votre application Auth0
- CLI
- Dashboard
Web.config :- Vérifier si vous êtes authentifié (et vous inviter à vous connecter au besoin)
- Créer une Auth0 Regular Web Application configurée pour
http://localhost:5000 - Générer les valeurs
Web.configavecauth0:Domain,auth0:ClientIdetauth0:ClientSecret
3000 par votre numéro de port dans chaque URL ci-dessus.Installer des packages NuGet
- Console du gestionnaire de package
- dotnet CLI
Tools → NuGet Package Manager → Package Manager Console) et exécutez :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.Configurer le middleware OWIN
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 :- Cookie middleware - stocke la session authentifiée de l’utilisateur
- Middleware OpenID Connect - gère la connexion avec Auth0 et le processus de déconnexion
ConfigureAuth est appelé dans la méthode Configuration de votre 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.Ajouter des actions de connexion, de logout et de profil
Controllers/AccountController.cs avec trois actions : Login, Logout et UserProfile.Login- appelleChallengeavec 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é versreturnUrl.UserProfile- lit les claims de l’utilisateur authentifié à partir deClaimsIdentityet les transmet à la vue viaUserProfileViewModel. L’attribut[Authorize]garantit que les utilisateurs non authentifiés sont d’abord redirigés vers la page de connexion.Logout- appelleSignOutdeux 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).
Models/UserProfileViewModel.cs pour stocker les données du profil :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.Ajouter une vue de profil
Views/Account/UserProfile.cshtml pour afficher les informations de l’utilisateur connecté :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".Ajoutez des liens de connexion et de déconnexion à votre layout
Views/Shared/_Layout.cshtml pour afficher les liens de connexion et de déconnexion en fonction de l’état d’authentification de l’utilisateur :<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.Problèmes courants
Incompatibilité de Redirect URI après la connexion
Incompatibilité de Redirect URI après la connexion
http vs https), le numéro de port, le chemin et les barres obliques finales.Boucle de connexion — l’app continue de rediriger vers Auth0
Boucle de connexion — l’app continue de rediriger vers Auth0
- Le cookie middleware doit être enregistré avant le middleware OpenID Connect dans
ConfigureAuth. app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)doit être le premier appel dansConfigureAuth.- L’attribut
[assembly: OwinStartup(typeof(Startup))]doit être présent pour que le pipeline OWIN soit correctement initialisé.
L’utilisateur n’est pas redirigé après le logout
L’utilisateur n’est pas redirigé après le logout
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 :La photo de profil ou l’adresse courriel est vide
La photo de profil ou l’adresse courriel est vide
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.Les valeurs Domain ou Client ID sont null au démarrage
Les valeurs Domain ou Client ID sont null au démarrage
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.Utilisation avancée
Personnaliser les paramètres de connexion
Personnaliser les paramètres de connexion
RedirectToIdentityProvider dans Startup.Auth.cs :Appeler une API au nom de l’utilisateur
Appeler une API au nom de l’utilisateur
audience et les portées d’API requises lors de la redirection OIDC :