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.

Already configured 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.

  1. 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.

  2. Abra la solución en Visual Studio (AppModelv2-WebApp-OpenIDConnect-DotNet.sln).

  3. 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.

  4. 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

Diagram of the interaction between the web browser, the web app, and the Microsoft identity platform in the sample app.

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 o common 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 en false 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.