- Redirigir a los usuarios a Universal Login de Auth0 cuando inicien sesión
- Procesar la devolución de llamada y almacenar la sesión en una cookie
- Mostrar el nombre, el correo electrónico y la foto de perfil del usuario autenticado
- Cerrar la sesión de los usuarios tanto en tu aplicación como en Auth0
Auth0.AspNetCore.Authentication en su lugar.Requisitos previos
- Una cuenta de Auth0: regístrate gratis
- Una aplicación ASP.NET MVC existente destinada a .NET Framework con OWIN habilitado, o una nueva creada a partir de la plantilla ASP.NET Web Application (.NET Framework) → MVC de Visual Studio
- Visual Studio 2019 o posterior (o cualquier IDE compatible con proyectos MVC de .NET Framework)
Pasos
Configure su aplicación de Auth0
- CLI
- Dashboard
Web.config listo para pegar, con tus credenciales ya completadas:- Mac/Linux
- Windows (PowerShell)
<add> de la salida a la sección <appSettings> de tu Web.config:3000 por el número de puerto real en cada una de las URL anteriores.Instale paquetes NuGet
- Consola del Administrador de paquetes
- CLI de dotnet
Tools → NuGet Package Manager → Package Manager Console) y ejecuta:System.Web puede causar problemas. Si tienes problemas con cookies duplicadas, consulta la guía sobre problemas de integración de cookies de System.Web.Configure el middleware de OWIN
App_Start/Startup.Auth.cs), actualice el método ConfigureAuth. Si no, cree el archivo ahora.Se requieren tanto el middleware de cookies como el middleware de OpenID Connect, y deben registrarse exactamente en este orden:- Middleware de cookies - almacena la sesión del usuario autenticado
- Middleware de OpenID Connect - controla el flujo de inicio y cierre de sesión de Auth0
ConfigureAuth desde el método Configuration de tu archivo Startup.cs:AuthenticationType se establece en "Auth0". Esta cadena se usa en el siguiente paso al desencadenar el desafío de inicio de sesión. La notificación RedirectToIdentityProvider intercepta las solicitudes de cierre de sesión y construye la URL correcta de cierre de sesión de Auth0.Agregar acciones de inicio de sesión, cierre de sesión y perfil
Controllers/AccountController.cs con tres métodos de acción: Login, Logout y UserProfile.Login- llama aChallengecon el esquema"Auth0". El middleware de OIDC intercepta esta llamada y redirige al usuario a Universal Login de Auth0. Después de iniciar sesión correctamente, el usuario es redirigido de nuevo areturnUrl.UserProfile- lee los claims del usuario autenticado desdeClaimsIdentityy los pasa a la vista medianteUserProfileViewModel. El atributo[Authorize]garantiza que los usuarios no autenticados sean redirigidos primero al inicio de sesión.Logout- llama aSignOutdos veces: una para borrar la cookie de sesión local y otra para cerrar la sesión del usuario en Auth0 (lo que también finaliza cualquier sesión activa de SSO).
Models/UserProfileViewModel.cs para almacenar los datos del perfil:Verificación
Ejecute la aplicación y vaya a/Account/Login. Debería redirigirse a la página de Universal Login de Auth0. Después de iniciar sesión, debería volver a redirigirse a la página de inicio de su aplicación. Si aparece un error de URI de redirección, verifique que la URL de callback en la configuración de su aplicación de Auth0 coincida exactamente con la URL en la que se está ejecutando su aplicación.Agregar una vista de perfil
Views/Account/UserProfile.cshtml para mostrar la información del usuario autenticado:UserProfileViewModel rellenado con claims extraídos por el middleware de OIDC cuando Auth0 devuelve el token de ID.Punto de control
Después de iniciar sesión, ve a/Account/UserProfile. Deberías ver tu nombre, correo electrónico y foto de perfil. Si el nombre o el correo electrónico aparecen vacíos, verifica que Scope en OpenIdConnectAuthenticationOptions incluya "openid profile email".Añade enlaces para iniciar y cerrar sesión a tu diseño
Views/Shared/_Layout.cshtml para mostrar enlaces para iniciar y cerrar sesión según el estado de autenticación del usuario:<nav> donde aparezcan los enlaces de navegación en el diseño.Verificación
Ejecuta la aplicación. Deberías ver un enlace de Iniciar sesión en la navegación. Después de iniciar sesión, debería cambiar para mostrar tu nombre (con enlace a tu perfil) y un enlace de Cerrar sesión. Al hacer clic en Cerrar sesión, se debería cerrar la sesión y volver a la página de inicio.Problemas comunes
La URI de redirección no coincide después de iniciar sesión
La URI de redirección no coincide después de iniciar sesión
http vs https), el número de puerto, la ruta y las barras finales.Bucle de inicio de sesión: la aplicación sigue redirigiendo a Auth0
Bucle de inicio de sesión: la aplicación sigue redirigiendo a Auth0
- El middleware de cookies debe registrarse antes que el middleware de OpenID Connect en
ConfigureAuth. app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType)debe ser la primera llamada enConfigureAuth.- El atributo
[assembly: OwinStartup(typeof(Startup))]debe estar presente para que la canalización de OWIN se inicialice correctamente.
El usuario no vuelve a la aplicación después de cerrar sesión
El usuario no vuelve a la aplicación después de cerrar sesión
returnTo a la URL de cierre de sesión de Auth0 en la notificación RedirectToIdentityProvider. La URL de retorno también debe estar incluida en Allowed Logout URLs de la configuración de tu aplicación en Auth0:La imagen de perfil o el correo electrónico están vacíos
La imagen de perfil o el correo electrónico están vacíos
Model.ProfileImage o Model.EmailAddress es null después de iniciar sesión.Solución: Verifica que Scope en OpenIdConnectAuthenticationOptions incluya "openid profile email". El scope profile proporciona el nombre y la imagen; el scope email proporciona la dirección de correo electrónico.Los valores de dominio o del ID de cliente son null al iniciar
Los valores de dominio o del ID de cliente son null al iniciar
auth0:Domain como auth0:ClientId existan en <appSettings> en Web.config y que estés ejecutando la configuración de compilación correcta (Debug/Release), que carga la transformación adecuada de Web.config.Uso avanzado
Personalizar parámetros de inicio de sesión
Personalizar parámetros de inicio de sesión
RedirectToIdentityProvider en Startup.Auth.cs:Llamar a una API en nombre del usuario
Llamar a una API en nombre del usuario
audience y los alcances requeridos de la API durante la redirección de OIDC: