Inicio rápido: Adición del inicio de sesión con Microsoft a una aplicación web de ASP.NET Core

¡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:

Inicio rápido: Adición del inicio de sesión con Microsoft en una aplicación web de ASP.NET Core

Lamentamos las molestias y agradecemos su paciencia mientras trabajamos para resolverlo.

En este inicio rápido, descargará y ejecutará un código de ejemplo que muestra cómo una aplicación web de ASP.NET Core puede realizar el inicio de sesión de los usuarios desde cualquier organización 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:

  • En URI de redirección, escriba https://localhost:44321/ y https://localhost:44321/signin-oidc .
  • En Dirección URL de cierre de sesión del canal frontal, escriba https://localhost:44321/signout-oidc.

El punto de conexión de autorización emitirá tokens de identificador de solicitud.

Already configured La aplicación está configurada con estos atributos.

Paso 2: Descarga del proyecto de ASP.NET Core

Ejecute el proyecto.

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 y está preparado para ejecutarse.

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 Core existente.

Funcionamiento del ejemplo

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

Clase Startup

El middleware Microsoft.AspNetCore.Authentication usa una clase Startup que se ejecuta al iniciarse el proceso de hospedaje:

public void ConfigureServices(IServiceCollection services)
{
    services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"));

    services.AddControllersWithViews(options =>
    {
        var policy = new AuthorizationPolicyBuilder()
            .RequireAuthenticatedUser()
            .Build();
        options.Filters.Add(new AuthorizeFilter(policy));
    });
   services.AddRazorPages()
        .AddMicrosoftIdentityUI();
}

El método AddAuthentication() configura el servicio para agregar la autenticación basada en cookies. Esta autenticación se usa en escenarios de explorador y para establecer el desafío en OpenID Connect.

La línea que contiene .AddMicrosoftIdentityWebApp agrega la autenticación de la Plataforma de identidad de Microsoft a la aplicación. Posteriormente, la aplicación se configura para iniciar sesión mediante la plataforma de identidad de Microsoft de acuerdo con la información de la sección AzureAD del archivo de configuración appsettings.json:

Clave de appsettings.json Descripción
ClientId El Id. de aplicación (cliente) de la aplicación registrada en Azure Portal.
Instance El punto de conexión del servicio de token de seguridad (STS) para que el usuario se autentique. Normalmente, este valor es https://login.microsoftonline.com/, que indica la nube pública de Azure.
TenantId Nombre o identificador (GUID) del inquilino, o bien common, para el inicio de sesión de usuarios con cuentas profesionales o educativas o cuentas personales de Microsoft.

El método Configure() contiene dos métodos importantes, app.UseAuthentication() y app.UseAuthorization(), que habilitan su funcionalidad con nombre. También en el método Configure(), debe registrar las rutas de Microsoft Identity Web mediante al menos una llamada a endpoints.MapControllerRoute() o a endpoints.MapControllers():

app.UseAuthentication();
app.UseAuthorization();

app.UseEndpoints(endpoints =>
{
    endpoints.MapControllerRoute(
        name: "default",
        pattern: "{controller=Home}/{action=Index}/{id?}");
    endpoints.MapRazorPages();
});

Atributo para proteger el controlador o los métodos

Puede proteger un controlador o los métodos de controlador mediante el atributo [Authorize]. Este atributo restringe el acceso al controlador o los métodos al permitir únicamente usuarios autenticados. Si el usuario aún no se ha autenticado, se puede iniciar un desafío de autenticación para acceder al controlador.

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

El repositorio de GitHub que contiene este tutorial de ASP.NET Core incluye instrucciones y más ejemplos de código que muestran cómo:

  • Agregar la autenticación a una nueva aplicación web de ASP.NET Core.
  • Llamar a Microsoft Graph, otras API de Microsoft o sus propias API web.
  • Agregar la autorización.
  • Iniciar la sesión de usuarios en nubes nacionales o con identidades sociales.