Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Informazioni su come accedere alle Microsoft Graph da un'app Web in esecuzione in Azure App Service.
Si vuole chiamare Microsoft Graph per l'app Web. Un modo sicuro per concedere all'app Web l'accesso ai dati consiste nell'usare un'identità gestita assegnata dal sistema. Un'identità gestita da Microsoft Entra ID consente al servizio app di accedere alle risorse tramite il controllo degli accessi in base al ruolo, senza richiedere le credenziali dell'app. Dopo aver assegnato un'identità gestita all'app Web, Azure si occupa della creazione e della distribuzione di un certificato. Non occorre preoccuparsi di gestire i segreti o le credenziali dell'app.
In questa esercitazione apprenderai a:
- Creare un'identità gestita assegnata dal sistema in un'app Web.
- Aggiungere le autorizzazioni di Microsoft Graph API a un'identità gestita.
- Chiamare Microsoft Graph da un'app Web usando le identità gestite.
Se non si ha un account Azure, creare un account free prima di iniziare.
Prerequisiti
- Applicazione Web in esecuzione in Azure App Service con il modulo di autenticazione/autorizzazione App abilitato.
Abilitare l'identità gestita nell'app
Se si crea e si pubblica l'app Web tramite Visual Studio, l'identità gestita è stata abilitata automaticamente nell'app.
Nel servizio dell'app selezionare Identità nel riquadro sinistro e quindi selezionare Sistema assegnato.
Verificare che lo Stato sia impostato su Sì.
In caso contrario, impostarlo su Sì, quindi selezionare Salva e quindi selezionare Sì per abilitare l'identità gestita assegnata dal sistema. Una volta abilitata l'identità gestita, lo stato è impostato su Sì e l'ID oggetto è disponibile.
Prendere nota del valore id oggetto , necessario nella sezione successiva.
Concedere l'accesso a Microsoft Graph
Quando si accede al Microsoft Graph, l'identità gestita deve disporre delle autorizzazioni appropriate per l'operazione da eseguire. Attualmente, non è possibile assegnare tali autorizzazioni tramite il Microsoft Entra admin center.
Esegui il seguente script per aggiungere le autorizzazioni richieste di Microsoft Graph API all'oggetto servizio principale dell'identità gestita.
# 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 $appRoleIdDopo aver eseguito lo script, verificare nell'interfaccia di amministrazione di Microsoft Entra che le autorizzazioni API richieste siano assegnate all'identità gestita.
Passare ad Applicazioni. Questo riquadro mostra tutte le entità servizio presenti nel tenant. Selezionare Aggiungi filtri e quindi immettere Tipo di applicazione==Identità gestite.
Selezionare l'entità servizio per l'identità gestita.
Se si segue questo tutorial, sono disponibili due entità servizio con lo stesso nome visualizzato, ad esempio secureWebApp. L'entità servizio con URL della home page rappresenta l'app Web nel tenant. L'entità servizio visualizzata in Identità gestite non dovrebbe avere un URL della home page elencato e l'ID oggetto deve corrispondere al valore ID oggetto dell'identità gestita nella sezione precedente.
Selezionare l'entità servizio per l'identità gestita.
In Panoramica selezionare Autorizzazioni. Vengono visualizzate le autorizzazioni aggiunte per Microsoft Graph.
Chiamare Microsoft Graph
Le classi ChainedTokenCredential, ManagedIdentityCredential e EnvironmentCredential vengono usate per ottenere una credenziale token per autorizzare le richieste a Microsoft Graph. Creare un'istanza della classe ChainedTokenCredential, che usa l'identità gestita nell'ambiente del servizio app o le variabili di ambiente di sviluppo per recuperare i token e collegarli al client del servizio. L'esempio di codice seguente ottiene le credenziali del token di autenticazione e le usa per creare un oggetto cliente del servizio, che recupera gli utenti nel gruppo.
Per visualizzare questo codice come parte di un'applicazione di esempio, vedere:
Installare il pacchetto della libreria client Microsoft.Identity.Web.MicrosoftGraph
Installare il pacchetto NuGet Microsoft.Identity.Web.MicrosoftGraph nel progetto utilizzando l'interfaccia a riga di comando di .NET Core o la Console del Gestore di Pacchetti in Visual Studio.
riga di comando di .NET Core
Aprire una riga di comando e passare alla directory che contiene il file di progetto.
Eseguire i comandi di installazione.
dotnet add package Microsoft.Identity.Web.MicrosoftGraph
dotnet add package Microsoft.Graph
Console del Gestore di Pacchetti
Aprire il progetto/soluzione in Visual Studio e aprire la console usando il comando Tools>NuGet Package Manager>Package Manager Console.
Eseguire i comandi di installazione.
Install-Package Microsoft.Identity.Web.MicrosoftGraph
Install-Package Microsoft.Graph
Esempio di .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;
}
Pulire le risorse
Se completi questa esercitazione e non hai più bisogno dell'app web o delle risorse associate, elimina le risorse che hai creato.
Eliminare il gruppo di risorse
Nel portale di Azure selezionare Gruppi di risorse dal menu del portale di Azure e selezionare il gruppo di risorse che contiene il servizio app e il piano di servizio app.
Fare clic su Elimina gruppo di risorse per eliminare il gruppo e tutte le risorse al suo interno.
Immettere il nome del gruppo di risorse da confermare.
L'esecuzione di questo processo potrebbe richiedere alcuni minuti.
Contenuti correlati
In questo tutorial hai imparato come:
- Creare un'identità gestita assegnata dal sistema in un'app Web.
- Aggiungere le autorizzazioni di Microsoft Graph API a un'identità gestita.
- Chiamare Microsoft Graph da un'app Web usando le identità gestite.
Informazioni su come connettere un'app .NET Core o Node.js a un database.