Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Saiba como acessar Microsoft Graph de um aplicativo Web em execução no Azure App Service.
Você deseja chamar Microsoft Graph para o aplicativo Web. Um modo seguro de permitir o acesso do aplicativo Web aos dados é usar uma identidade gerenciada atribuída ao sistema. Uma identidade gerenciada de Microsoft Entra ID permite que o Serviço de Aplicativo acesse recursos por meio do RBAC (controle de acesso baseado em função), sem a necessidade de credenciais do aplicativo. Depois de atribuir uma identidade gerenciada ao seu aplicativo Web, o Azure cuidará da criação e distribuição de um certificado. Você não precisa se preocupar em gerenciar segredos nem credenciais de aplicativo.
Neste tutorial, você aprenderá como:
- Criar uma identidade gerenciada atribuída ao sistema em um aplicativo Web.
- Adicione permissões do Microsoft Graph API a uma identidade gerenciada.
- Chame Microsoft Graph de um aplicativo Web usando identidades gerenciadas.
Se você não tiver uma conta Azure, crie uma conta free antes de começar.
Pré-requisitos
- Um aplicativo Web em execução em Azure App Service que tem o módulo de autenticação/autorização App Service habilitado.
Habilitar a identidade gerenciada no aplicativo
Se você criar e publicar seu aplicativo Web por meio de Visual Studio, a identidade gerenciada foi habilitada em seu aplicativo para você.
No serviço de aplicativo, selecione Identidade no painel esquerdo e escolha Atribuído ao sistema.
Verifique se Status está definido como Ativado.
Caso contrário, defina-o como Ativado, selecione Salvar e selecione Sim para habilitar a identidade gerenciada atribuída pelo sistema. Quando a identidade gerenciada é habilitada, o status é definido como Ativado e a ID do objeto fica disponível.
Anote o valor da ID do objeto , que você precisa na próxima seção.
Conceder acesso ao Microsoft Graph
Ao acessar o Microsoft Graph, a identidade gerenciada precisa ter permissões adequadas para a operação que deseja executar. Atualmente, não há nenhuma opção para atribuir essas permissões por meio do Microsoft Entra admin center.
Executar o script a seguir adicionará as permissões de API do Microsoft Graph solicitadas ao objeto da entidade de serviço de identidade gerenciada.
# Install the module. # Install-Module Microsoft.Graph -Scope CurrentUser # The tenant ID $TenantId = "aaaabbbb-0000-cccc-1111-dddd2222eeee" # The name of your web app, which has a managed identity. $webAppName = "SecureWebApp-20201106120003" $resourceGroupName = "SecureWebApp-20201106120003ResourceGroup" # The name of the app role that the managed identity should be assigned to. $appRoleName = "User.Read.All" # Get the web app's managed identity's object ID. Connect-AzAccount -Tenant $TenantId $managedIdentityObjectId = (Get-AzWebApp -ResourceGroupName $resourceGroupName -Name $webAppName).identity.principalid Connect-MgGraph -TenantId $TenantId -Scopes 'Application.Read.All','AppRoleAssignment.ReadWrite.All' # Get Microsoft Graph app's service principal and app role. $serverApplicationName = "Microsoft Graph" $serverServicePrincipal = (Get-MgServicePrincipal -Filter "DisplayName eq '$serverApplicationName'") $serverServicePrincipalObjectId = $serverServicePrincipal.Id $appRoleId = ($serverServicePrincipal.AppRoles | Where-Object {$_.Value -eq $appRoleName }).Id # Assign the managed identity access to the app role. New-MgServicePrincipalAppRoleAssignment ` -ServicePrincipalId $managedIdentityObjectId ` -PrincipalId $managedIdentityObjectId ` -ResourceId $serverServicePrincipalObjectId ` -AppRoleId $appRoleIdDepois de executar o script, verifique no Centro de administração do Microsoft Entra que as permissões de API solicitadas são atribuídas à identidade gerenciada.
Vá para Aplicativos. Esse painel exibe todas as entidades de serviço no seu locatário. Selecione Adicionar filtros e, em seguida, insira Tipo de aplicativo == Identidades gerenciadas.
Selecione a entidade de serviço para a identidade gerenciada.
Se você estiver seguindo este tutorial, há dois entidades de serviço com o mesmo nome de exibição, como, por exemplo, secureWebApp. A entidade de serviço que tem uma URL de Página inicial representa o aplicativo Web no locatário. A entidade de serviço que aparece em Identidades Gerenciadas e não deve ter uma URL de página inicial listado , e o ID do objeto deve corresponder ao valor do ID do objeto da identidade gerenciada na seção anterior.
Selecione a entidade de serviço para a identidade gerenciada.
Em Visão geral, selecione Permissões. Você verá as permissões adicionadas para o Microsoft Graph.
Chamar Microsoft Graph
O ChainedTokenCredential, as classes ManagedIdentityCredential e EnvironmentCredential são usadas para obter uma credencial de token para seu código autorizar solicitações a Microsoft Graph. Crie uma instância da classe ChainedTokenCredential, que usa a identidade gerenciada no ambiente do Serviço de Aplicativo ou as variáveis de ambiente de desenvolvimento para buscar tokens e anexá-los ao cliente do serviço. O exemplo de código a seguir obtém a credencial de token autenticada e a usa para criar um objeto de cliente de serviço, que obtém os usuários no grupo.
Para ver esse código como parte de um aplicativo de exemplo, confira:
Instale o pacote da biblioteca de cliente Microsoft.Identity.Web.MicrosoftGraph
Instale o pacote NuGet Microsoft.Identity.Web.MicrosoftGraph em seu projeto usando a interface de linha de comando do .NET Core ou o Console do Gerenciador de Pacotes no Visual Studio.
linha de comando do .NET Core
Abra uma linha de comando e alterne para o diretório que contém o arquivo de projeto.
Execute os comandos de instalação.
dotnet add package Microsoft.Identity.Web.MicrosoftGraph
dotnet add package Microsoft.Graph
Console do Package Manager
Abra o projeto/solução no Visual Studio e abra o console usando o comando Tools>NuGet Package Manager>Package Manager Console.
Execute os comandos de instalação.
Install-Package Microsoft.Identity.Web.MicrosoftGraph
Install-Package Microsoft.Graph
Exemplo de .NET
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
using Microsoft.AspNetCore.Mvc.RazorPages;
using Microsoft.Extensions.Logging;
using Microsoft.Graph;
using Azure.Identity;
...
public IList<MSGraphUser> Users { get; set; }
public async Task OnGetAsync()
{
// Create the Graph service client with a ChainedTokenCredential which gets an access
// token using the available Managed Identity or environment variables if running
// in development.
var credential = new ChainedTokenCredential(
new ManagedIdentityCredential(),
new EnvironmentCredential());
string[] scopes = new[] { "https://graph.microsoft.com/.default" };
var graphServiceClient = new GraphServiceClient(
credential, scopes);
List<MSGraphUser> msGraphUsers = new List<MSGraphUser>();
try
{
//var users = await graphServiceClient.Users.Request().GetAsync();
var users = await graphServiceClient.Users.GetAsync();
foreach (var u in users.Value)
{
MSGraphUser user = new MSGraphUser();
user.userPrincipalName = u.UserPrincipalName;
user.displayName = u.DisplayName;
user.mail = u.Mail;
user.jobTitle = u.JobTitle;
msGraphUsers.Add(user);
}
}
catch (Exception ex)
{
string msg = ex.Message;
}
Users = msGraphUsers;
}
Limpar os recursos
Se você concluir este tutorial e não precisar mais do aplicativo Web ou dos recursos associados, limpe os recursos criados.
Exclua o grupo de recursos
No portal do Azure, selecione Grupos de recursos no menu do portal do Azure e selecione o grupo de recursos que contém o serviço de aplicativo e o plano do serviço de aplicativo.
Selecione Excluir grupo de recursos para excluir o grupo de recursos e todos os recursos que ele contém.
Insira o nome do grupo de recursos para confirmar.
Esse processo pode levar vários minutos para ser executado.
Conteúdo relacionado
Neste tutorial, você aprendeu a:
- Criar uma identidade gerenciada atribuída ao sistema em um aplicativo Web.
- Adicione permissões do Microsoft Graph API a uma identidade gerenciada.
- Chame Microsoft Graph de um aplicativo Web usando identidades gerenciadas.
Saiba como conectar um aplicativo .NET Core ou Node.js app a um banco de dados.