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.
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
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