Início Rápido: Aplicativo Web ASP.NET Core que conecta usuários e chama o Microsoft Graph em nome deles

Seja bem-vindo! Essa provavelmente não é a página que você esperava. Enquanto trabalhamos em uma correção, este link direcionará você para o artigo certo:

Início Rápido: Adicionar entrada com a Microsoft para um aplicativo Web do ASP.NET Core

Pedimos desculpas pela inconveniência e agradecemos sua paciência enquanto trabalhamos para resolver isso.

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

Confira Como o exemplo funciona para ver uma ilustração.

Etapa 1: Configurar seu aplicativo no portal do Azure

Para que o exemplo de código deste guia de início rápido funcione, adicione o URI de redirecionamentohttps://localhost:44321/signin-oidc e a >URL de logoff de front-channelhttps://localhost:44321/signout-oidc no registro do aplicativo.

Already configured Esses atributos já estão configurados no seu aplicativo.

Etapa 2: Baixar o projeto do ASP.NET Core

Execute o projeto.

Dica

Para evitar erros causados por limitações de comprimento do caminho no Windows, é recomendável extrair os arquivos em um diretório próximo à raiz da unidade.

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

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

Observação

Enter_the_Supported_Account_Info_Here

Observações sobre o código

Esta seção fornece uma visão geral do código necessário para conectar usuários e chamar a API do Microsoft Graph em nome deles. Essa visão geral pode ser útil para entender o funcionamento do código funciona, os argumentos principais e caso você queira adicionar uma entrada a um aplicativo ASP.NET Core existente e chamar o Microsoft Graph. Ela usa o Microsoft.Identity.Web, que é um wrapper do MSAL.NET.

Como o exemplo funciona

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

Classe de inicialização

O middleware Microsoft.AspNetCore.Authentication usa a classe Startup 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 método AddAuthentication() configura o serviço para adicionar a autenticação baseada em cookies, que é usada em cenários do navegador, e para definir o desafio para OpenID Connect.

A linha que contém .AddMicrosoftIdentityWebApp adiciona a autenticação de 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 da seção AzureAD do arquivo de configuração appSettings.json:

chave appsettings.json Descrição >
ClientId ID do aplicativo (cliente) referente ao aplicativo registrado no portal do Azure.
Instance Ponto de extremidade do STS (serviço de token de segurança) para o usuário se autenticar. Esse valor geralmente é https://login.microsoftonline.com/, indicando a nuvem pública do Azure.
TenantId Nome do seu locatário ou sua ID de locatário (um GUID) ou comum para conectar usuários que tenham contas corporativas ou de estudante ou contas pessoais Microsoft.

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

O método Configure() contém dois métodos importantes, app.UseAuthentication() e app.UseAuthorization(), que habilitam sua funcionalidade nomeada. Além disso, no método Configure(), você precisará registrar as rotas da Web de Identidade da Microsoft com, pelo menos, uma chamada a endpoints.MapControllerRoute() ou uma chamada a 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 um método do controlador

Você pode proteger um controlador ou os respectivos métodos aplicando o atributo [Authorize] à classe do controlador ou a um ou mais dos métodos dele. Esse atributo [Authorize] 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 guia de início rápido, os escopos são lidos com base no 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 relatar um problema ou desejar saber mais sobre as opções de suporte, confira Ajuda e suporte para desenvolvedores.

Próximas etapas

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

  • Adicionar autenticação a um novo aplicativo Web do ASP.NET Core
  • Chamar o Microsoft Graph, outras APIs da Microsoft ou suas próprias APIs Web
  • Adicionar autorização
  • Conectar usuários em nuvens nacionais ou com identidades sociais