Tutorial: Adición de inicio de sesión a una aplicación
En el tutorial anterior, se creó y configuró un proyecto de ASP.NET Core para la autenticación. En este tutorial se instalarán los paquetes necesarios y se agregará el código que implementa la autenticación en la experiencia de inicio de sesión y cierre de sesión.
En este tutorial, aprenderá a:
- Se identifican e instalan los paquetes NuGet necesarios para la autenticación
- Se implementa la autenticación en el código
- Se agregan las experiencias de inicio y cierre de sesión
- Finalización de los requisitos previos y pasos en Tutorial: Preparar una aplicación para la autenticación.
Los paquetes NuGet relacionados con la identidad deben instalarse en el proyecto para que se habilite la autenticación de los usuarios.
- En el menú superior de Visual Studio, seleccione Herramientas> Administrador de paquetes NuGet > Administrar paquetes NuGet para la solución.
- Con la pestaña Examinar seleccionada, busque y seleccione Microsoft.Identity.Web.UI. Seleccione la casilla Proyecto y, después, seleccione Instalar.
- Repita esto para Microsoft.Identity.Web.Diagnostics y Microsoft.Identity.Web.DownstreamApi.
Abra Program.cs y sustituya todo el contenido del archivo por el fragmento de código siguiente:
// <ms_docref_import_types> using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc.Authorization; using Microsoft.Identity.Web; using Microsoft.Identity.Web.UI; // </ms_docref_import_types> // <ms_docref_add_msal> WebApplicationBuilder builder = WebApplication.CreateBuilder(args); IEnumerable<string>? initialScopes = builder.Configuration.GetSection("DownstreamApi:Scopes").Get<IEnumerable<string>>(); builder.Services.AddMicrosoftIdentityWebAppAuthentication(builder.Configuration, "AzureAd") .EnableTokenAcquisitionToCallDownstreamApi(initialScopes) .AddDownstreamApi("DownstreamApi", builder.Configuration.GetSection("DownstreamApi")) .AddInMemoryTokenCaches(); // </ms_docref_add_msal> // <ms_docref_add_default_controller_for_sign-in-out> builder.Services.AddRazorPages().AddMvcOptions(options => { var policy = new AuthorizationPolicyBuilder() .RequireAuthenticatedUser() .Build(); options.Filters.Add(new AuthorizeFilter(policy)); }).AddMicrosoftIdentityUI(); // </ms_docref_add_default_controller_for_sign-in-out> // <ms_docref_enable_authz_capabilities> WebApplication app = builder.Build(); app.UseAuthentication(); app.UseAuthorization(); // </ms_docref_enable_authz_capabilities> app.UseHttpsRedirection(); app.UseStaticFiles(); app.UseRouting(); app.MapRazorPages(); app.MapControllers(); app.Run();
Después de instalar los paquetes NuGet y agregar el código necesario para la autenticación, agregue las experiencias de inicio y cierre de sesión.
- Expanda Páginas, haga clic con el botón derecho en Compartido y, luego, seleccione Agregar > Página de Razor.
- Seleccione Página de Razor: vacío y, luego, seleccione Agregar.
- Ingrese _LoginPartial.cshtml como nombre y, luego, seleccione Agregar.
Abra _LoginPartial.cshtml y agregue el código siguiente para agregar la experiencia de inicio y cierre de sesión:
@using System.Security.Principal <ul class="navbar-nav"> @if (User.Identity?.IsAuthenticated == true) { <li class="nav-item"> <span class="navbar-text text-dark">Hello @User.Identity?.Name!</span> </li> <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignOut">Sign out</a> </li> } else { <li class="nav-item"> <a class="nav-link text-dark" asp-area="MicrosoftIdentity" asp-controller="Account" asp-action="SignIn">Sign in</a> </li> } </ul>
Abra _Layout.cshtml y agregue una referencia al archivo
_LoginPartial
creado en el paso anterior. Esta sola línea debe colocarse entre</ul>
y</div>
:</ul> <partial name="_LoginPartial" /> </div>