Guia de início rápido: ASP.NET aplicativo Web principal que entra em usuários e chama o Microsoft Graph em seu nome

Boas-vindas! Esta provavelmente não é a página que você estava esperando. Enquanto trabalhamos em uma correção, este link deve levá-lo ao artigo certo:

Guia de início rápido: adicionar entrada com a Microsoft a um aplicativo Web ASP.NET Core

Pedimos desculpas pelo inconveniente e agradecemos a sua paciência enquanto trabalhamos para resolver este problema.

Neste início rápido, você baixa e executa um exemplo de código que demonstra como um aplicativo Web ASP.NET Core pode entrar em usuários de qualquer organização do Microsoft Entra e chama o Microsoft Graph.

Consulte Como funciona o exemplo para obter uma ilustração.

Etapa 1: Configurar seu aplicativo no portal do Azure

Para que o exemplo de código neste início rápido funcione, adicione um URI de redirecionamento e >uma URL de https://localhost:44321/signin-oidc logout do canal frontal no registro do https://localhost:44321/signout-oidc aplicativo.

Already configured Seu aplicativo está configurado com esses atributos.

Etapa 2: Baixe o projeto ASP.NET Core

Execute o projeto.

Gorjeta

Para evitar erros causados por limitações de comprimento de caminho no Windows, recomendamos extrair o arquivo ou clonar o repositório em um diretório perto da raiz da unidade.

Etapa 3: Seu aplicativo está configurado e pronto para ser executado

Configuramos seu projeto com valores das propriedades do seu aplicativo e ele está pronto para ser executado.

Nota

Enter_the_Supported_Account_Info_Here

Sobre o código

Esta seção fornece uma visão geral do código necessário para entrar em usuários e chamar a API do Microsoft Graph em seu nome. Esta visão geral pode ser útil para entender como o código funciona, os principais argumentos e também se você quiser adicionar entrada a um aplicativo ASP.NET Core existente e chamar o Microsoft Graph. Ele usa Microsoft.Identity.Web, que é um wrapper em torno MSAL.NET.

Como funciona a amostra

Diagram that how the sample app generated by this quickstart works.

Classe de inicialização

O middleware Microsoft.AspNetCore.Authentication usa uma Startup classe que é executada quando o processo de hospedagem é inicializado:


  public void ConfigureServices(IServiceCollection services)
  {  
    // Get the scopes from the configuration (appsettings.json)
    var initialScopes = Configuration.GetValue<string>("DownstreamApi:Scopes")?.Split(' ');
  
      // Add sign-in with Microsoft
      services.AddAuthentication(OpenIdConnectDefaults.AuthenticationScheme)
        .AddMicrosoftIdentityWebApp(Configuration.GetSection("AzureAd"))

            // Add the possibility of acquiring a token to call a protected web API
            .EnableTokenAcquisitionToCallDownstreamApi(initialScopes)

                // Enables controllers and pages to get GraphServiceClient by dependency injection
                // And use an in memory token cache
                .AddMicrosoftGraph(Configuration.GetSection("DownstreamApi"))
                .AddInMemoryTokenCaches();

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

      // Enables a UI and controller for sign in and sign out.
      services.AddRazorPages()
          .AddMicrosoftIdentityUI();
  }

O AddAuthentication() método configura o serviço para adicionar autenticação baseada em cookie, que é usada em cenários de navegador e para definir o desafio como OpenID Connect.

A linha que contém .AddMicrosoftIdentityWebApp adiciona a autenticação da plataforma de identidade da Microsoft ao seu aplicativo. Isso é fornecido pelo Microsoft.Identity.Web. Em seguida, ele é configurado para entrar usando a plataforma de identidade da Microsoft com base nas informações na AzureAD seção do arquivo de configuração do appsettings.json :

appsettings.json chave Descrição >
ClientId ID do aplicativo (cliente) do aplicativo registrado no portal do Azure.
Instance Ponto de extremidade do serviço de token de segurança (STS) para o usuário autenticar. Esse valor normalmente https://login.microsoftonline.com/é , indicando a nuvem pública do Azure.
TenantId Nome do seu inquilino ou respetivo ID de inquilino (um GUID) ou comum para iniciar sessão de utilizadores com contas escolares ou profissionais ou contas pessoais da Microsoft.

O EnableTokenAcquisitionToCallDownstreamApi método permite que seu aplicativo adquira um token para chamar APIs da Web protegidas. AddMicrosoftGraph permite que seus controladores ou páginas do Razor se beneficiem diretamente do GraphServiceClient (por injeção de dependência) e os AddInMemoryTokenCaches métodos permitem que seu aplicativo se beneficie de um cache de token.

O Configure() método contém dois métodos app.UseAuthentication() importantes e app.UseAuthorization(), que habilitam sua funcionalidade nomeada. Também no Configure() método, você deve registrar as rotas do Microsoft Identity Web com pelo menos uma chamada para endpoints.MapControllerRoute() ou uma chamada para endpoints.MapControllers().

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

app.UseEndpoints(endpoints =>
{

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

// endpoints.MapControllers(); // REQUIRED if MapControllerRoute() isn't called.

Proteger um controlador ou o método de um controlador

Você pode proteger um controlador ou seus métodos aplicando o [Authorize] atributo à classe do controlador ou a um ou mais de seus métodos. Esse [Authorize] atributo restringe o acesso permitindo apenas usuários autenticados. Se o usuário ainda não estiver autenticado, um desafio de autenticação poderá ser iniciado para acessar o controlador. Neste início rápido, os escopos são lidos a partir do arquivo de configuração:

[AuthorizeForScopes(ScopeKeySection = "DownstreamApi:Scopes")]
public async Task<IActionResult> Index()
{
    var user = await _graphServiceClient.Me.GetAsync();
    ViewData["ApiResult"] = user?.DisplayName;

    return View();
}

Ajuda e suporte

Se precisar de ajuda, quiser comunicar um problema ou quiser saber mais sobre as suas opções de suporte, consulte Ajuda e suporte para programadores.

Próximos passos

O repositório GitHub que contém o exemplo de código ASP.NET Core mencionado neste início rápido inclui instruções e mais exemplos de código que mostram como:

  • Adicionar autenticação a um novo aplicativo Web ASP.NET Core
  • Chame o Microsoft Graph, outras APIs da Microsoft ou suas próprias APIs da Web
  • Adicionar autorização
  • Iniciar sessão de utilizadores em nuvens nacionais ou com identidades sociais