Tutorial: Adicionar início de sessão a uma aplicação
No tutorial anterior, um projeto ASP.NET Core foi criado e configurado para autenticação. Este tutorial instalará os pacotes necessários e adicionará código que implementa a autenticação à experiência de entrada e saída.
Neste tutorial:
- Identificar e instalar os pacotes NuGet necessários para autenticação
- Implementar autenticação no código
- Adicionar as experiências de entrada e saída
Pré-requisitos
- Conclusão dos pré-requisitos e etapas em Tutorial: Preparar um aplicativo para autenticação.
Instalar pacotes de identidade
Os pacotes NuGet relacionados à identidade devem ser instalados no projeto para que a autenticação dos usuários seja habilitada.
- No menu superior do Visual Studio, selecione Ferramentas > Gerenciador de Pacotes > NuGet Gerenciar Pacotes NuGet para Solução.
- Com a guia Procurar selecionada, procure e selecione Microsoft.Identity.Web.UI. Marque a caixa de seleção Projeto e, em seguida, selecione Instalar.
- Repita isso para Microsoft.Identity.Web.Diagnostics e Microsoft.Identity.Web.DownstreamApi.
Implementar autenticação e adquirir tokens
Abra Program.cs e substitua todo o conteúdo do arquivo pelo seguinte trecho:
// <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["DownstreamApi:Scopes"]?.Split(' '); 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();
Adicionar a experiência de entrada e saída
Depois de instalar os pacotes NuGet e adicionar o código necessário para autenticação, adicione as experiências de entrada e saída.
Criar o arquivo _LoginPartial.cshtml
- Expanda Páginas, clique com o botão direito do mouse em Compartilhado e selecione Adicionar > página Razor.
- Selecione Razor Page - Vazio e, em seguida, selecione Adicionar.
- Digite _LoginPartial.cshtml para o nome e selecione Adicionar.
Editar o arquivo _LoginPartial.cshtml
Abra _LoginPartial.cshtml e adicione o seguinte código para adicionar a experiência de entrada e saída:
@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 e adicione uma referência a
_LoginPartial
created na etapa anterior. Esta única linha deve ser colocada entre</ul>
e</div>
:</ul> <partial name="_LoginPartial" /> </div>