- Rediriger les utilisateurs vers Auth0 Universal Login lorsqu’ils ouvrent une session
- Gérer le callback et stocker la session dans un témoin
- 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 ciblant .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 prenant en charge les projets MVC .NET Framework)
Étapes
Configurez votre application Auth0
- CLI
- Dashboard
Web.config prêt à coller, avec vos identifiants déjà renseignés :- Mac/Linux
- Windows (PowerShell)
<add> de la sortie dans la section <appSettings> de votre fichier Web.config :3000 par le numéro de port que vous utilisez dans chaque URL ci-dessus.Installer des packages NuGet
- Console du gestionnaire de packages
- CLI dotnet
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 témoins en double, consultez les directives sur les problèmes d’intégration des témoins System.Web.Configurer le middleware OWIN
App_Start/Startup.Auth.cs), mettez à jour sa méthode ConfigureAuth. Sinon, créez le fichier maintenant.Les middlewares de cookies et OpenID Connect sont tous deux requis, et ils doivent être enregistrés dans cet ordre exact :- Middleware de cookies - stocke la session de l’utilisateur authentifié
- Middleware OpenID Connect - gère le processus de connexion et de déconnexion avec Auth0
ConfigureAuth est appelée dans la méthode Configuration de votre fichier Startup.cs :AuthenticationType est défini à "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 demandes de déconnexion et génère l’URL de déconnexion Auth0 appropriée.Ajouter des actions de connexion, de déconnexion et d’accès au profil
Controllers/AccountController.cs comportant trois actions : Login, Logout et UserProfile.Login- appelleChallengeavec le schéma"Auth0". Le middleware OIDC intercepte cet appel et redirige l’utilisateur vers Universal Login d’Auth0. Après une authentification réussie, l’utilisateur est redirigé versreturnUrl.UserProfile- lit les claims de l’utilisateur authentifié à partir deClaimsIdentityet les transmet à la vue au moyen deUserProfileViewModel. 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 fois 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 de connexion universelle d’Auth0. Après vous être connecté, vous devriez être redirigé vers la page d’accueil de votre application. Si vous voyez une erreur d’URI de redirection, 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 renseignements de l’utilisateur connecté :UserProfileViewModel alimenté à partir des revendications extraites par le middleware OIDC quand Auth0 renvoie le jeton d’identité.Point de contrôle
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 inclut "openid profile email".Ajoutez des liens de connexion et de déconnexion à votre mise en page
Views/Shared/_Layout.cshtml pour afficher des 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 s’affichent dans la mise en page.Vérification
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) et par 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
L’URI de redirection ne correspond pas après la connexion
L’URI de redirection ne correspond pas après la connexion
http vs https), le numéro de port, le chemin et les barres obliques finales.Boucle de connexion — l’application continue de rediriger vers Auth0
Boucle de connexion — l’application continue de rediriger vers Auth0
- Le middleware de témoins 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 la déconnexion
L’utilisateur n’est pas redirigé après la déconnexion
returnTo à l’URL de déconnexion Auth0 dans la notification RedirectToIdentityProvider. L’URL de retour doit aussi figurer dans les 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 la photo, tandis que 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) qui charge la transformation Web.config appropriée.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 pendant la redirection OIDC :