Inicio rápido: aplicación web de ASP.NET que conecta a usuarios de Microsoft Entra
¡Bienvenido! Probablemente esta no sea la página que esperaba. Mientras trabajamos en una corrección, este vínculo debería llevarle al artículo correcto:
Guía de inicio rápido: Adición de inicio de sesión con Microsoft a una aplicación web ASP.NET
Lamentamos las molestias y agradecemos su paciencia mientras trabajamos para resolverlo.
En este inicio rápido, se descarga y ejecuta un ejemplo de código que muestra cómo una aplicación web de ASP.NET puede realizar el inicio de sesión de usuarios con cuentas de Microsoft Entra.
Paso 1: Configuración de la aplicación en Azure Portal
Para que el código de ejemplo de este inicio rápido funcione, agregue introduzca https://localhost:44368/ en URI de redirección.
La aplicación está configurada con este atributo.
Paso 2: Descarga del proyecto
Ejecute el proyecto con Visual Studio 2019.
Sugerencia
Se recomienda extraer el archivo o clonar el repositorio en un directorio próximo a la raíz de la unidad para evitar los errores provocados por las limitaciones de longitud de la ruta de acceso en Windows.
Paso 3: La aplicación está configurada y lista para ejecutarse
Hemos configurado el proyecto con los valores de las propiedades de su aplicación.
Extraiga el archivo. zip en una carpeta local que esté próxima a la carpeta raíz. Por ejemplo, en C:\Azure-Samples.
Se recomienda extraer el archivo en un directorio próximo a la raíz de la unidad para evitar errores provocados por las limitaciones de longitud de la ruta de acceso en Windows.
Abra la solución en Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).
Según la versión de Visual Studio que use, es posible que tenga que hacer clic con el botón derecho en el proyecto >AppModelv2-WebApp-OpenIDConnect-DotNet y después en Restaurar paquetes NuGet.
Abra la Consola del Administrador de paquetes seleccionando Ver>Otras ventanas>Consola del Administrador de paquetes. A continuación, ejecute
Update-Package Microsoft.CodeDom.Providers.DotNetCompilerPlatform -r
.
Nota:
Enter_the_Supported_Account_Info_Here
Más información
En esta sección, se proporciona una introducción al código necesario para el inicio de sesión de usuarios. Esta introducción puede ser útil para comprender cómo funciona el código, cuáles son los argumentos principales y cómo agregar el inicio de sesión a una aplicación ASP.NET existente.
Funcionamiento del ejemplo
Paquetes NuGet del middleware OWIN
Puede configurar la canalización de autenticación con la autenticación basada en cookies mediante OpenID Connect en ASP.NET con paquetes del middleware OWIN. Puede instalar estos paquetes mediante la ejecución del siguiente comando en la Consola del Administrador de paquetes de Visual Studio:
Install-Package Microsoft.Owin.Security.OpenIdConnect
Install-Package Microsoft.Owin.Security.Cookies
Install-Package Microsoft.Owin.Host.SystemWeb
Clase de inicio de OWIN
El middleware OWIN usa una clase de inicio que se ejecuta cuando se inicia el proceso de hospedaje. En este inicio rápido, el archivo startup.cs se encuentra en la carpeta raíz. En el código siguiente se muestran los parámetros que usa este inicio rápido:
public void Configuration(IAppBuilder app)
{
app.SetDefaultSignInAsAuthenticationType(CookieAuthenticationDefaults.AuthenticationType);
app.UseCookieAuthentication(new CookieAuthenticationOptions());
app.UseOpenIdConnectAuthentication(
new OpenIdConnectAuthenticationOptions
{
// Sets the client ID, authority, and redirect URI as obtained from Web.config
ClientId = clientId,
Authority = authority,
RedirectUri = redirectUri,
// PostLogoutRedirectUri is the page that users will be redirected to after sign-out. In this case, it's using the home page
PostLogoutRedirectUri = redirectUri,
Scope = OpenIdConnectScope.OpenIdProfile,
// ResponseType is set to request the code id_token, which contains basic information about the signed-in user
ResponseType = OpenIdConnectResponseType.CodeIdToken,
// ValidateIssuer set to false to allow personal and work accounts from any organization to sign in to your application
// To only allow users from a single organization, set ValidateIssuer to true and the 'tenant' setting in Web.> config to the tenant name
// To allow users from only a list of specific organizations, set ValidateIssuer to true and use the ValidIssuers parameter
TokenValidationParameters = new TokenValidationParameters()
{
ValidateIssuer = false // Simplification (see note below)
},
// OpenIdConnectAuthenticationNotifications configures OWIN to send notification of failed authentications to > the OnAuthenticationFailed method
Notifications = new OpenIdConnectAuthenticationNotifications
{
AuthenticationFailed = OnAuthenticationFailed
}
}
);
}
Where Descripción ClientId
El identificador de la aplicación registrada en Azure Portal. Authority
El punto de conexión del servicio de token de seguridad (STS) para que el usuario se autentique. Normalmente, es https://login.microsoftonline.com/{tenant}/v2.0
para la nube pública. En esta URL, {tenant} es el nombre del inquilino, su descripción ocommon
si se hace referencia al punto de conexión común. El punto de conexión común se usa para las aplicaciones multiinquilino.RedirectUri
La dirección URL a la que se envía a los usuarios después de la autenticación en la plataforma de identidad de Microsoft. PostLogoutRedirectUri
La dirección URL a donde se envía a los usuarios después de cerrar sesión. Scope
La lista de ámbitos que se solicitan, separados por espacios. ResponseType
La solicitud de que la respuesta de la autenticación contenga un código de autorización y un token de identificador. TokenValidationParameters
Una lista de parámetros para la validación del token. En este caso, ValidateIssuer
está establecido enfalse
para indicar que puede aceptar inicios de sesión desde cualquier tipo de cuenta: personal, profesional o educativa.Notifications
Una lista de los delegados que se pueden ejecutar en mensajes OpenIdConnect
.
Nota:
Establecer ValidateIssuer = false
es una simplificación para este inicio rápido. En las aplicaciones reales, valide el emisor. Consulte los ejemplos para entender cómo hacerlo.
Desafío de autenticación
Puede forzar a un usuario para que inicie sesión si solicita un desafío de autenticación en el controlador:
public void SignIn()
{
if (!Request.IsAuthenticated)
{
HttpContext.GetOwinContext().Authentication.Challenge(
new AuthenticationProperties{ RedirectUri = "/" },
OpenIdConnectAuthenticationDefaults.AuthenticationType);
}
}
Sugerencia
La solicitud de un desafío de autenticación mediante este método es opcional. Normalmente se usa cuando se desea que una vista sea accesible tanto para usuarios autenticados como no autenticados. También puede proteger los controladores mediante el método descrito en la sección siguiente.
Atributo para proteger un controlador o las acciones de un controlador
Puede proteger un controlador o sus acciones mediante el atributo [Authorize]
. Este atributo restringe el acceso al controlador o a sus acciones al permitir que solo los usuarios autenticados puedan acceder a estas acciones. Cuando un usuario no autenticado intente acceder a una de las acciones o de los controladores representados por el atributo [Authorize]
, se producirá automáticamente un desafío de autenticación.
Ayuda y soporte técnico
Si necesita ayuda, desea informar de un problema o desea obtener información sobre las opciones de soporte técnico, consulte Opciones de ayuda y soporte técnico para desarrolladores.
Pasos siguientes
Visite el tutorial de ASP.NET para acceder a una guía completa paso a paso sobre la creación de aplicaciones y nuevas características, que incluye una explicación completa de este inicio rápido.