Partilhar via


Tutorial: Adicionar iniciar 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

Instalar pacotes de identidade

Identidade relacionada pacotes NuGet devem ser instalados no projeto para que a autenticação dos usuários seja habilitada.

  1. No menu superior do Visual Studio, selecione Ferramentas > Gerenciador de Pacotes NuGet > Gerenciar Pacotes NuGet para Solução.
  2. Com a guia Procurar selecionada, procure e selecione Microsoft.Identity.Web.UI . Marque a caixa de seleção Project e, em seguida, selecione Instalar.
  3. Repita isso para Microsoft.Identity.Web.Diagnostics e Microsoft.Identity.Web.DownstreamApi .

Implementar autenticação e adquirir tokens

  1. 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.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();
    

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 ficheiro _LoginPartial.cshtml

  1. Expanda Páginas, clique com o botão direito do rato Partilhadase, em seguida, selecione Adicionar > uma página Razor.
  2. Selecione Razor Page - Emptye, em seguida, selecione Adicionar.
  3. Digite _LoginPartial.cshtml para o nome e, em seguida, selecione Adicionar.

Editar o arquivo _LoginPartial.cshtml

  1. Abra o _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>
    
  2. Abra _Layout.cshtml e adicione uma referência ao _LoginPartial criado na etapa anterior. Esta única linha deve ser colocada entre </ul> e </div>:

        </ul>
        <partial name="_LoginPartial" />
    </div>
    

Próximos passos