Come usare Azure AD per accedere all'API Graph di IntuneHow to use Azure AD to access the Intune Graph API

L'API Microsoft Graph ora supporta Microsoft Intune con API e ruoli di autorizzazione specifici.The Microsoft Graph API now supports Microsoft Intune with specific APIs and permission roles. L'API Graph usa Azure Active Directory (Azure AD) per l'autenticazione e il controllo di accesso.The Graph API uses Azure Active Directory (Azure AD) for authentication and access control.
L'accesso all'API Graph di Intune richiede:Access to the Intune Graph API requires:

  • Un ID applicazione con:An application ID with:

    • Autorizzazione per la chiamata di API Graph e Azure AD.Permission to call Azure AD and Graph APIs.
    • Ambiti di autorizzazione appropriati per le specifiche attività dell'applicazione.Permission scopes relevant to the specific application tasks.
  • Credenziali utente con:User credentials with:

    • Autorizzazione per l'accesso al tenant di Azure AD associato all'applicazione.Permission to access the Azure AD tenant associated with the application.
    • Autorizzazioni di ruolo necessarie per supportare gli ambiti di autorizzazione dell'applicazione.Role permissions required to support the application permission scopes.
  • L'utente finale deve concedere all'app l'autorizzazione per l'esecuzione delle attività dell'applicazione per il tenant di Azure.The end user to grant permission to the app to perform applications tasks for their Azure tenant.

Questo articolo:This article:

  • Illustra come registrare un'applicazione con l'accesso all'API Graph e i ruoli di autorizzazione appropriati.Shows how to register an application with access to the Graph API and relevant permission roles.

  • Descrive i ruoli di autorizzazione dell'API Graph di Intune.Describes the Intune Graph API permission roles.

  • Fornisce esempi di autenticazione dell'API Graph di Intune per C# e PowerShell.Provides Intune Graph API authentication examples for C# and PowerShell.

  • Descrive come supportare più tenantDescribes how to support multiple tenants

Per altre informazioni, vedere:To learn more, see:

Registrare le app per l'uso dell'API GraphRegister apps to use Graph API

Per registrare un'app per l'uso dell'API Graph:To register an app to use Graph API:

  1. Accedere al portale di Azure con credenziali amministrative.Sign into the Azure portal using administrative credentials.

    A seconda delle esigenze, è possibile usare:As appropriate, you may use:

    • L'account amministratore del tenant.The tenant admin account.
    • Un account utente del tenant con l'impostazione Gli utenti possono registrare applicazioni abilitata.A tenant user account with the Users can register applications setting enabled.
  2. Dal menu scegliere Azure Active Directory > Registrazioni per l'app.From the menu, choose Azure Active Directory > App Registrations.

    The App registrations menu command

  3. Scegliere Registrazione nuova applicazione per creare una nuova applicazione oppure scegliere un'applicazione esistente.Either choose New application registration to create a new application or choose an existing application. Se si sceglie un'applicazione esistente, ignorare il passaggio successivo.(If you choose an existing application, skip the next step.)

  4. Nel pannello Crea specificare quanto segue:On the Create blade, specify the following:

    1. Il nome per l'applicazione (visualizzato quando gli utenti eseguono l'accesso).A Name for the application (displayed when users sign in).

    2. I valori Tipo di applicazione e URI di reindirizzamento.The Application type and Redirect URI values.

      Questi elementi variano in base ai requisiti.These vary according to your requirements. Se ad esempio si usa Azure AD Authentication Library (ADAL), impostare Tipo di applicazione su Native e URI di reindirizzamento su urn:ietf:wg:oauth:2.0:oob.For example, if you're using an Azure AD Authentication Library (ADAL), set Application Type to Native and Redirect URI to urn:ietf:wg:oauth:2.0:oob.

      New app properties and values

      Per altre informazioni, vedere Scenari di autenticazione per Azure AD.To learn more, see Authentication Scenarios for Azure AD.

  5. Nel pannello dell'applicazione:From the application blade:

    1. Prendere nota del valore ID applicazione.Note the Application ID value.

    2. Scegliere Impostazioni > Accesso all'API > Autorizzazioni necessarie.Choose Settings > API access > Required permissions.

    The Required permissions setting

  6. Dal pannello Autorizzazioni necessarie scegliere Aggiungi > Aggiungi accesso all'API > Selezionare un'API.From the Required Permissions blade, choose Add > Add API access > Select an API.

    The Microsoft Graph setting

  7. Dal pannello Selezionare un'API scegliere Microsoft Graph > Seleziona.From the Select an API blade, choose Microsoft Graph > Select. Verrà aperto il pannello Abilita accesso, in cui sono elencati gli ambiti di autorizzazione disponibili per l'applicazione.The Enable access blade opens and lists permission scopes available to your application.

    Intune Graph API permission scopes

    Scegliere i ruoli necessari per l'app inserendo un segno di spunta a sinistra dei nomi corrispondenti.Choose the roles required for your app by placing a checkmark to the left of the relevant names. Per informazioni sugli specifici ambiti di autorizzazione di Intune, vedere Ambiti di autorizzazione di Intune.To learn about specific Intune permission scopes, see Intune permission scopes. Per informazioni sugli altri ambiti di autorizzazione dell'API Graph, vedere Informazioni di riferimento sulle autorizzazioni di Microsoft Graph.To learn about other Graph API permission scopes, see Microsoft Graph permissions reference.

    Per ottenere risultati ottimali, scegliere il minor numero di ruoli necessario per implementare l'applicazione.For best results, choose the fewest roles needed to implement your application.

    Al termine, scegliere Seleziona e Fine per salvare le modifiche.When finished, choose Select and Done to save you changes.

A questo punto, è inoltre possibile:At this point, you may also:

  • Scegliere di concedere a tutti gli account del tenant l'autorizzazione per usare l'app senza specificare credenziali.Choose to grant permission for all tenant accounts to use the app without providing credentials.

    A tale scopo, scegliere Concedi autorizzazioni e accettare la richiesta di conferma.To do so, choose Grant permissions and accept the confirmation prompt.

    Quando si esegue l'applicazione per la prima volta, viene richiesto di concedere all'app l'autorizzazione per l'esecuzione dei ruoli selezionati.When you run the application for the first time, you're prompted to grant the app permission to perform the selected roles.

    The Grant permissions button

  • Rendere disponibile l'app agli utenti all'esterno del tenant.Make the app available to users outside your tenant. In genere, questa operazione è necessaria solo per i partner che supportano più tenant o organizzazioni.(This is typically only required for partners supporting multiple tenants/organizations.)

    A tale scopo, procedere nel seguente modo:To do so:

    1. Scegliere Manifesto nel pannello dell'applicazione, in modo da aprire il pannello Modifica manifesto.Choose Manifest from the application blade, which opens the Edit Manifest blade.

      The Edit manifest blade

    2. Modificare il valore dell'impostazione availableToOtherTenants in true.Change the value of the availableToOtherTenants setting to true.

    3. Salvare le modifiche.Save your changes.

Ambiti di autorizzazione di IntuneIntune permission scopes

Azure AD e l'API Graph usano gli ambiti di autorizzazione per controllare l'accesso alle risorse aziendali.Azure AD and the Graph API use permission scopes to control access to corporate resources.

Gli ambiti di autorizzazione (anche denominati ambiti OAuth) controllano l'accesso alle specifiche entità di Intune e alle relative proprietà.Permission scopes (also called the OAuth scopes) control access to specific Intune entities and their properties. In questa sezione sono riepilogati gli ambiti di autorizzazione per le funzionalità dell'API Graph di Intune.This section summarizes the permission scopes for Intune Graph API features.

Per altre informazioni, vedere:To learn more:

Quando si concede l'autorizzazione per l'API Graph, è possibile specificare i seguenti ambiti per controllare l'accesso alle funzionalità di Intune. Nella tabella seguente sono riepilogati gli ambiti di autorizzazione dell'API Graph di Intune.When you grant permission to the Graph API, you can specify the following scopes to control access to Intune features: The following table summarizes the Intune Graph API permission scopes. La prima colonna indica il nome della funzionalità, così com'è visualizzato nel portale di Azure, e la seconda colonna specifica il nome dell'ambito di autorizzazione.The first column shows the name of the feature as displayed in the Azure portal and the second column provides the permission scope name.

Impostazione Abilita accessoEnable Access setting Nome ambitoScope name
Perform user-impacting remote actions on Microsoft Intune devices (Eseguire azioni remote che influiscono sull'utente nei dispositivi di Microsoft Intune)Perform user-impacting remote actions on Microsoft Intune devices DeviceManagementManagedDevices.PrivilegedOperations.AllDeviceManagementManagedDevices.PrivilegedOperations.All
Read and write Microsoft Intune devices (Leggere e scrivere i dispositivi di Microsoft Intune)Read and write Microsoft Intune devices DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All
Read Microsoft Intune devices (Leggere i dispositivi di Microsoft Intune)Read Microsoft Intune devices DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All
Read and write Microsoft Intune RBAC settings (Leggere e scrivere le impostazioni di controllo degli accessi in base al ruolo di Microsoft Intune)Read and write Microsoft Intune RBAC settings DeviceManagementRBAC.ReadWrite.AllDeviceManagementRBAC.ReadWrite.All
Read Microsoft Intune RBAC settings (Leggere le impostazioni di controllo degli accessi in base al ruolo di Microsoft Intune)Read Microsoft Intune RBAC settings DeviceManagementRBAC.Read.AllDeviceManagementRBAC.Read.All
Read and write Microsoft Intune apps (Leggere e scrivere le app di Microsoft Intune)Read and write Microsoft Intune apps DeviceManagementApps.ReadWrite.AllDeviceManagementApps.ReadWrite.All
Read Microsoft Intune apps (Leggere le app di Microsoft Intune)Read Microsoft Intune apps DeviceManagementApps.Read.AllDeviceManagementApps.Read.All
Read and write Microsoft Intune Device Configuration and Policies (Leggere e scrivere la configurazione e i criteri dei dispositivi di Microsoft Intune)Read and write Microsoft Intune Device Configuration and Policies DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All
Read Microsoft Intune Device Configuration and Policies (Leggere la configurazione e i criteri dei dispositivi di Microsoft Intune)Read Microsoft Intune Device Configuration and Policies DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All
Read and write Microsoft Intune configuration (Leggere e scrivere la configurazione di Microsoft Intune)Read and write Microsoft Intune configuration DeviceManagementServiceConfig.ReadWrite.AllDeviceManagementServiceConfig.ReadWrite.All
Read Microsoft Intune configuration (Leggere la configurazione di Microsoft Intune)Read Microsoft Intune configuration DeviceManagementServiceConfig.Read.AllDeviceManagementServiceConfig.Read.All

La tabella elenca le impostazioni nell'ordine in cui sono visualizzate nel portale di Azure.The table lists the settings as they appear in the Azure portal. Nelle sezioni seguenti vengono descritti gli ambiti in ordine alfabetico.The following sections describe the scopes in alphabetical order.

Attualmente, tutti gli ambiti di autorizzazione di Intune richiedono l'accesso con privilegi di amministratore.At this time, all Intune permission scopes require administrator access. Ciò significa che sono necessarie credenziali corrispondenti per l'esecuzione di app o script che accedono alle risorse dell'API Graph di Intune.This means you need corresponding credentials when running apps or scripts that access Intune Graph API resources.

DeviceManagementApps.Read.AllDeviceManagementApps.Read.All

  • Impostazione Abilita accesso: Leggere le app di Microsoft IntuneEnable Access setting: Read Microsoft Intune apps

  • Consente l'accesso in lettura alle proprietà e allo stato delle entità seguenti:Permits read access to the following entity properties and status:

    • App per dispositivi mobiliMobile Apps
    • Categorie di app per dispositivi mobiliMobile App Categories
    • Criteri di protezione delle appApp Protection Policies
    • Configurazioni delle appApp Configurations

DeviceManagementApps.ReadWrite.AllDeviceManagementApps.ReadWrite.All

  • Impostazione Abilita accesso: Leggere e scrivere le app di Microsoft IntuneEnable Access setting: Read and write Microsoft Intune apps

  • Consente le stesse operazioni di DeviceManagementApps.Read.AllAllows the same operations as DeviceManagementApps.Read.All

  • Consente inoltre modifiche alle entità seguenti:Also permits changes to the following entities:

    • App per dispositivi mobiliMobile Apps
    • Categorie di app per dispositivi mobiliMobile App Categories
    • Criteri di protezione delle appApp Protection Policies
    • Configurazioni delle appApp Configurations

DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All

  • Impostazione Abilita accesso: Leggere la configurazione e i criteri dei dispositivi di Microsoft IntuneEnable Access setting: Read Microsoft Intune device configuration and policies

  • Consente l'accesso in lettura alle proprietà e allo stato delle entità seguenti:Permits read access to the following entity properties and status:

    • Configurazione dei dispositiviDevice Configuration
    • Criteri di conformità dei dispositiviDevice Compliance Policy
    • Messaggi di notificaNotification Messages

DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All

  • Impostazione Abilita accesso: Leggere e scrivere la configurazione e i criteri dei dispositivi di Microsoft IntuneEnable Access setting: Read and write Microsoft Intune device configuration and policies

  • Consente le stesse operazioni di DeviceManagementConfiguration.Read.AllAllows the same operations as DeviceManagementConfiguration.Read.All

  • Le app possono inoltre creare, assegnare, eliminare e modificare le entità seguenti:Apps can also create, assign, delete, and change the following entities:

    • Configurazione dei dispositiviDevice Configuration
    • Criteri di conformità dei dispositiviDevice Compliance Policy
    • Messaggi di notificaNotification Messages

DeviceManagementManagedDevices.PrivilegedOperations.AllDeviceManagementManagedDevices.PrivilegedOperations.All

  • Impostazione Abilita accesso: Eseguire azioni remote che influiscono sull'utente nei dispositivi di Microsoft IntuneEnable Access setting: Perform user-impacting remote actions on Microsoft Intune devices

  • Consente le seguenti azioni remote in un dispositivo gestito:Permits the following remote actions on a managed device:

    • RitiroRetire
    • CancellazioneWipe
    • Reimpostazione/recupero del passcodeReset/Recover Passcode
    • Blocco remotoRemote Lock
    • Abilitazione o disabilitazione della modalità di dispositivo persoEnable/Disable Lost Mode
    • Pulizia del PCClean PC
    • RiavviareReboot
    • Eliminazione di un utente da un dispositivo condivisoDelete User from Shared Device

DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All

  • Impostazione Abilita accesso: Leggere i dispositivi di Microsoft IntuneEnable Access setting: Read Microsoft Intune devices

  • Consente l'accesso in lettura alle proprietà e allo stato delle entità seguenti:Permits read access to the following entity properties and status:

    • Dispositivo gestitoManaged Device
    • Categoria di dispositiviDevice Category
    • App rilevataDetected App
    • Azioni remoteRemote actions
    • Informazioni sul malwareMalware information

DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All

  • Impostazione Abilita accesso: Leggere e scrivere i dispositivi di Microsoft IntuneEnable Access setting: Read and write Microsoft Intune devices

  • Consente le stesse operazioni di DeviceManagementManagedDevices.Read.AllAllows the same operations as DeviceManagementManagedDevices.Read.All

  • Le app possono inoltre creare, eliminare e modificare le entità seguenti:Apps can also create, delete, and change the following entities:

    • Dispositivo gestitoManaged Device
    • Categoria di dispositiviDevice Category
  • Sono inoltre consentite le azioni remote seguenti:The following remote actions are also allowed:

    • Individuazione dei dispositiviLocate devices
    • Bypass del blocco attivazioneBypass activation lock
    • Richiesta di assistenza remotaRequest remote assistance

DeviceManagementRBAC.Read.AllDeviceManagementRBAC.Read.All

  • Impostazione Abilita accesso: Leggere le impostazioni di controllo degli accessi in base al ruolo di Microsoft IntuneEnable Access setting: Read Microsoft Intune RBAC settings

  • Consente l'accesso in lettura alle proprietà e allo stato delle entità seguenti:Permits read access to the following entity properties and status:

    • Assegnazioni di ruoloRole Assignments
    • Definizioni di ruoloRole Definitions
    • Operazioni su risorseResource Operations

DeviceManagementRBAC.ReadWrite.AllDeviceManagementRBAC.ReadWrite.All

  • Impostazione Abilita accesso: Leggere e scrivere le impostazioni di controllo degli accessi in base al ruolo di Microsoft IntuneEnable Access setting: Read and write Microsoft Intune RBAC settings

  • Consente le stesse operazioni di DeviceManagementRBAC.Read.AllAllows the same operations as DeviceManagementRBAC.Read.All

  • Le app possono inoltre creare, assegnare, eliminare e modificare le entità seguenti:Apps can also create, assign, delete, and change the following entities:

    • Assegnazioni di ruoloRole Assignments
    • Definizioni di ruoloRole Definitions

DeviceManagementServiceConfig.Read.AllDeviceManagementServiceConfig.Read.All

  • Impostazione Abilita accesso: Leggere la configurazione di Microsoft IntuneEnable Access setting: Read Microsoft Intune configuration

  • Consente l'accesso in lettura alle proprietà e allo stato delle entità seguenti:Permits read access to the following entity properties and status:

    • Registrazione del dispositivoDevice Enrollment
    • Certificato Apple Push Notification ServiceApple Push Notification Certificate
    • Programma di registrazione del dispositivo mobile di Apple:Apple Device Enrollment Program
    • Volume Purchase Program di AppleApple Volume Purchase Program
    • Exchange ConnectorExchange Connector
    • Termini e condizioniTerms and Conditions
    • Gestione delle spese per telecomunicazioniTelecoms Expense Management
    • Infrastruttura a chiave pubblica (PKI) cloudCloud PKI
    • PersonalizzazioneBranding
    • Mobile Threat DefenseMobile Threat Defense

DeviceManagementServiceConfig.ReadWrite.AllDeviceManagementServiceConfig.ReadWrite.All

  • Impostazione Abilita accesso: Leggere e scrivere la configurazione di Microsoft IntuneEnable Access setting: Read and write Microsoft Intune configuration

  • Consente le stesse operazioni di DeviceManagementServiceConfig.Read.All_Allows the same operations as DeviceManagementServiceConfig.Read.All_

  • Le app possono inoltre configurare le funzionalità di Intune seguenti:Apps can also configure the following Intune features:

    • Registrazione del dispositivoDevice Enrollment
    • Certificato Apple Push Notification ServiceApple Push Notification Certificate
    • Programma di registrazione del dispositivo mobile di Apple:Apple Device Enrollment Program
    • Volume Purchase Program di AppleApple Volume Purchase Program
    • Exchange ConnectorExchange Connector
    • Termini e condizioniTerms and Conditions
    • Gestione delle spese per telecomunicazioniTelecoms Expense Management
    • Infrastruttura a chiave pubblica (PKI) cloudCloud PKI
    • PersonalizzazioneBranding
    • Mobile Threat DefenseMobile Threat Defense

Esempi di autenticazione di AD AzureAzure AD authentication examples

In questa sezione viene illustrato come incorporare Azure AD nei progetti C# e PowerShell.This section shows how to incorporate Azure AD into your C# and PowerShell projects.

In ogni esempio sarà necessario specificare un ID applicazione che disponga almeno dell'ambito di autorizzazione DeviceManagementManagedDevices.Read.All (descritto in precedenza).In each example, you'll need to specify an application ID that has at least the DeviceManagementManagedDevices.Read.All permission scope (discussed earlier).

Quando si testa un esempio, potrebbero essere visualizzati errori di stato HTTP 403 (Accesso negato) simili al seguente:When testing either example, you may receive HTTP status 403 (Forbidden) errors similar to the following:

{
  "error": {
    "code": "Forbidden",
    "message": "Application is not authorized to perform this operation - Operation ID " +
       "(for customer support): 00000000-0000-0000-0000-000000000000 - " +
       "Activity ID: cc7fa3b3-bb25-420b-bfb2-1498e598ba43 - " +
       "Url: https://example.manage.microsoft.com/" +
       "Service/Resource/RESTendpoint?" +
       "api-version=2017-03-06 - CustomApiErrorPhrase: ",
    "innerError": {
      "request-id": "00000000-0000-0000-0000-000000000000",
      "date": "1980-01-0112:00:00"
    }
  }
}

In questo caso, verificare quanto segue:If this happens, verify that:

  • L'ID applicazione è stato aggiornato a un ID autorizzato a usare l'API Graph e l'ambito di autorizzazione DeviceManagementManagedDevices.Read.All.You've updated the application ID to one authorized to use the Graph API and the DeviceManagementManagedDevices.Read.All permission scope.

  • Le credenziali del tenant supportano le funzioni amministrative.Your tenant credentials support administrative functions.

  • Il codice è simile agli esempi visualizzati.Your code is similar to the displayed samples.

Autenticare Azure AD in C#Authenticate Azure AD in C#

In questo esempio viene illustrato come usare C# per recuperare un elenco di dispositivi associati all'account di Intune.This example shows how to use C# to retrieve a list of devices associated with your Intune account.

  1. Avviare Visual Studio e quindi creare un nuovo progetto App console (.NET Framework) di Visual C#.Start Visual Studio and then create a new Visual C# Console app (.NET Framework) project.

  2. Immettere un nome per il progetto e specificare gli altri dettagli in base alle esigenze.Enter a name for your project and provide other details as desired.

    Creating a C# console app project in Visual Studio

  3. Usare Esplora soluzioni per aggiungere il pacchetto NuGet Microsoft ADAL al progetto.Use the Solution Explorer to add the Microsoft ADAL NuGet package to the project.

    1. Fare clic con il pulsante destro del mouse in Esplora soluzioni.Right-click the Solution Explorer.
    2. Scegliere Gestisci pacchetti NuGet...Choose Manage NuGet Packages… > Sfoglia.> Browse.
    3. Selezionare Microsoft.IdentityModel.Clients.ActiveDirectory e quindi scegliere Installa.Select Microsoft.IdentityModel.Clients.ActiveDirectory and then choose Install.

    Selecting the Azure AD identity model module

  4. Aggiungere le istruzioni seguenti all'inizio di Program.cs:Add the following statements to the top of Program.cs:

    using Microsoft.IdentityModel.Clients.ActiveDirectory;</p>
    using System.Net.Http;
    
  5. Aggiungere un metodo per creare l'intestazione dell'autorizzazione:Add a method to create the authorization header:

    private static async Task<string> GetAuthorizationHeader()
    {
        string applicationId = "<Your Application ID>";
        string authority = "https://login.microsoftonline.com/common/";
        Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob");
        AuthenticationContext context = new AuthenticationContext(authority);
        AuthenticationResult result = await context.AcquireTokenAsync(
            "https://graph.microsoft.com",
            applicationId, redirectUri,
            new PlatformParameters(PromptBehavior.Auto));
        return result.CreateAuthorizationHeader();
    

    Ricordare di modificare il valore di application_ID in modo che corrisponda a un ID che disponga almeno dell'ambito di autorizzazione DeviceManagementManagedDevices.Read.All, come descritto in precedenza.Remember to change the value of application_ID to match one granted at least the DeviceManagementManagedDevices.Read.All permission scope, as described earlier.

  6. Aggiungere un metodo per recuperare l'elenco dei dispositivi:Add a method to retrieve the list of devices:

    private static async Task<string> GetMyManagedDevices()
    {
        string authHeader = await GetAuthorizationHeader();
        HttpClient graphClient = new HttpClient();
        graphClient.DefaultRequestHeaders.Add("Authorization", authHeader);
        return await graphClient.GetStringAsync(
            "https://graph.microsoft.com/beta/me/managedDevices");
    }
    
  7. Aggiornare Main in modo da eseguire la chiamata di GetMyManagedDevices:Update Main to call GetMyManagedDevices:

    string devices = GetMyManagedDevices().GetAwaiter().GetResult();
    Console.WriteLine(devices);
    
  8. Compilare ed eseguire il programma.Compile and run your program.

Quando si esegue il programma per la prima volta, verranno visualizzate due richieste.When you first run your program, you should receive two prompts. La prima richiede le credenziali e la seconda concede le autorizzazioni per la richiesta managedDevices.The first requests your credentials and the second grants permissions for the managedDevices request.

Per riferimento, ecco il programma completato:For reference, here's the completed program:

using Microsoft.IdentityModel.Clients.ActiveDirectory;
using System;
using System.Net.Http;
using System.Threading.Tasks;

namespace IntuneGraphExample
{
    class Program
    {
        static void Main(string[] args)
        {
            string devices = GetMyManagedDevices().GetAwaiter().GetResult();
            Console.WriteLine(devices);
        }

        private static async Task<string> GetAuthorizationHeader()
        {
            string applicationId = "<Your Application ID>";
            string authority = "https://login.microsoftonline.com/common/";
            Uri redirectUri = new Uri("urn:ietf:wg:oauth:2.0:oob");
            AuthenticationContext context = new AuthenticationContext(authority);
            AuthenticationResult result = await context.AcquireTokenAsync("https://graph.microsoft.com", applicationId, redirectUri, new PlatformParameters(PromptBehavior.Auto));
            return result.CreateAuthorizationHeader();
        }

        private static async Task<string> GetMyManagedDevices()
        {
            string authHeader = await GetAuthorizationHeader();
            HttpClient graphClient = new HttpClient();
            graphClient.DefaultRequestHeaders.Add("Authorization", authHeader);
            return await graphClient.GetStringAsync("https://graph.microsoft.com/beta/me/managedDevices");
        }
    }
}

Autenticare Azure AD (PowerShell)Authenticate Azure AD (PowerShell)

Il seguente script di PowerShell usa il modulo Azure AD PowerShell per l'autenticazione.The following PowerShell script uses the AzureAD PowerShell module for authentication. Per altre informazioni, vedere Azure Active Directory PowerShell versione 2 e gli esempi di Intune PowerShell.To learn more, see Azure Active Directory PowerShell Version 2 and the Intune PowerShell examples.

In questo esempio, aggiornare il valore di $clientID in modo che corrisponda un ID applicazione valido.In this example, update the value of $clientID to match a valid application ID.

function Get-AuthToken {
    [cmdletbinding()]
    param
    (
        [Parameter(Mandatory = $true)]
        $User
    )

    $userUpn = New-Object "System.Net.Mail.MailAddress" -ArgumentList $User
    $tenant = $userUpn.Host

    Write-Host "Checking for AzureAD module..."

    $AadModule = Get-Module -Name "AzureAD" -ListAvailable
    if ($AadModule -eq $null) {
        Write-Host "AzureAD PowerShell module not found, looking for AzureADPreview"
        $AadModule = Get-Module -Name "AzureADPreview" -ListAvailable
    }

    if ($AadModule -eq $null) {
        write-host
        write-host "AzureAD Powershell module not installed..." -f Red
        write-host "Install by running 'Install-Module AzureAD' or 'Install-Module AzureADPreview' from an elevated PowerShell prompt" -f Yellow
        write-host "Script can't continue..." -f Red
        write-host
        exit
    }

    # Getting path to ActiveDirectory Assemblies
    # If the module count is greater than 1 find the latest version

    if ($AadModule.count -gt 1) {
        $Latest_Version = ($AadModule | select version | Sort-Object)[-1]
        $aadModule = $AadModule | ? { $_.version -eq $Latest_Version.version }
        $adal = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
        $adalforms = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"
    }

    else {
        $adal = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.dll"
        $adalforms = Join-Path $AadModule.ModuleBase "Microsoft.IdentityModel.Clients.ActiveDirectory.Platform.dll"
    }

    [System.Reflection.Assembly]::LoadFrom($adal) | Out-Null
    [System.Reflection.Assembly]::LoadFrom($adalforms) | Out-Null

    $clientId = "<Your Application ID>"
    $redirectUri = "urn:ietf:wg:oauth:2.0:oob"
    $resourceAppIdURI = "https://graph.microsoft.com"
    $authority = "https://login.microsoftonline.com/$Tenant"

    try {
        $authContext = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.AuthenticationContext" -ArgumentList $authority
        # https://msdn.microsoft.com/library/azure/microsoft.identitymodel.clients.activedirectory.promptbehavior.aspx
        # Change the prompt behaviour to force credentials each time: Auto, Always, Never, RefreshSession
        $platformParameters = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.PlatformParameters" -ArgumentList "Auto"
        $userId = New-Object "Microsoft.IdentityModel.Clients.ActiveDirectory.UserIdentifier" -ArgumentList ($User, "OptionalDisplayableId")
        $authResult = $authContext.AcquireTokenAsync($resourceAppIdURI, $clientId, $redirectUri, $platformParameters, $userId).Result
        # If the accesstoken is valid then create the authentication header
        if ($authResult.AccessToken) {
            # Creating header for Authorization token
            $authHeader = @{
                'Content-Type' = 'application/json'
                'Authorization' = "Bearer " + $authResult.AccessToken
                'ExpiresOn' = $authResult.ExpiresOn
            }
            return $authHeader
        }
        else {
            Write-Host
            Write-Host "Authorization Access Token is null, please re-run authentication..." -ForegroundColor Red
            Write-Host
            break
        }
    }
    catch {
        write-host $_.Exception.Message -f Red
        write-host $_.Exception.ItemName -f Red
        write-host
        break
    }   
}

$authToken = Get-AuthToken -User "<Your AAD Username>"

try {
    $uri = "https://graph.microsoft.com/beta/me/managedDevices"
    Write-Verbose $uri
    (Invoke-RestMethod -Uri $uri –Headers $authToken –Method Get).Value
}
catch {
    $ex = $_.Exception
    $errorResponse = $ex.Response.GetResponseStream()
    $reader = New-Object System.IO.StreamReader($errorResponse)
    $reader.BaseStream.Position = 0
    $reader.DiscardBufferedData()
    $responseBody = $reader.ReadToEnd();
    Write-Host "Response content:`n$responseBody" -f Red
    Write-Error "Request to $Uri failed with HTTP Status $($ex.Response.StatusCode) $($ex.Response.StatusDescription)"
    write-host
    break
}

Supportare più tenant e partnerSupport multiple tenants and partners

Se l'organizzazione supporta altre organizzazioni con specifici tenant di Azure Active Directory, è possibile consentire ai clienti di usare l'applicazione con i rispettivi tenant.If your organization supports organizations with their own Azure AD tenants, you may want to permit your clients to use your application with their respective tenants.

A tale scopo, procedere nel seguente modo:To do so:

  1. Verificare che l'account del cliente esista nel tenant di Azure AD di destinazione.Verify that the client account exists in the target Azure AD tenant.

  2. Verificare che l'account del tenant consenta agli utenti di registrare applicazioni (vedere Impostazioni utente).Verify that your tenant account allows users to register applications (see User settings).

  3. Stabilire una relazione tra ogni tenant.Establish a relationship between each tenant.

    A tale scopo:To do so, either:

    a.a. Usare il Centro per i partner Microsoft per definire una relazione con il cliente e il relativo indirizzo di posta elettronica.Use the Microsoft Partner Center to define a relationship with your client and their email address.

    b.b. Invitare l'utente come guest nel tenant.Invite the user to become a guest of your tenant.

Per invitare l'utente come guest nel tenant:To invite the user to be a guest of your tenant:

  1. Scegliere Aggiungi un utente guest dal pannello Attività rapide.Choose Add a guest user from the Quick tasks panel.

    Use Quick Tasks to add a guest user

  2. Immettere l'indirizzo di posta elettronica del cliente e, facoltativamente, aggiungere un messaggio personalizzato per l'invito.Enter the client's email address and (optionally) add a personalized message for the invite.

    Inviting an external user as a guest

  3. Scegliere Invita.Choose Invite.

Verrà inviato un invito all'utente.This sends an invite to the user.

A sample guest invitation

L'utente dovrà scegliere il collegamento Guida introduttiva per accettare l'invito.The user needs to choose the Get Started link to accept your invitation.

Quando è stata stabilita la relazione (o è stato accettato l'invito), aggiungere l'account utente a Ruolo della directory.When the relationship is established (or your invitation has been accepted), add the user account to the Directory role.

Ricordare di aggiungere l'utente ad altri ruoli in base alle esigenze.Remember to add the user to other roles as needed. Ad esempio, per consentire all'utente di gestire le impostazioni di Intune, l'utente deve essere un amministratore globale o un amministratore del servizio Intune.For example, to allow the user to manage Intune settings, they need to be either a Global Administrator or an Intune Service administrator.

Inoltre:Also:

  • Usare http://portal.office.com per assegnare una licenza di Intune all'account utente.Use http://portal.office.com to assign an Intune license to your user account.

  • Aggiornare il codice dell'applicazione per eseguire l'autenticazione nel dominio del tenant di Azure AD del cliente, anziché nel proprio.Update application code to authenticate to the client's Azure AD tenant domain, rather than your own.

    Se ad esempio il dominio del proprio tenant è contosopartner.onmicrosoft.com e il dominio del tenant del cliente è northwind.onmicrosoft.com, sarà necessario aggiornare il codice per l'autenticazione nel tenant del cliente.For example, suppose your tenant domain is contosopartner.onmicrosoft.com and your client's tenant domain is northwind.onmicrosoft.com, you would update your code to authenticate to your client's tenant.

    A tale scopo, in un'applicazione C# basata sull'esempio precedente, sarà necessario modificare il valore della variabile authority:To do so in a C# application based on the earlier example, you'd change the value of the authority variable:

    string authority = "https://login.microsoftonline.com/common/";
    

    suto

    string authority = "https://login.microsoftonline.com/northwind.onmicrosoft.com/";
    
Per inviare commenti e suggerimenti sul prodotto, visita la pagina Intune Feedback