Zugreifen auf die Intune Graph-API über Azure Active DirectoryHow to use Azure AD to access the Intune Graph API

Die Microsoft Graph-API unterstützt jetzt Microsoft Intune mit bestimmten APIs und Berechtigungsrollen.The Microsoft Graph API now supports Microsoft Intune with specific APIs and permission roles. Der Graph-API verwendet für die Authentifizierung und Zugriffsteuerung Azure Active Directory (Azure AD).The Graph API uses Azure Active Directory (Azure AD) for authentication and access control.
Für den Zugriff auf die Intune Graph-API benötigen Sie Folgendes:Access to the Intune Graph API requires:

  • Eine Anwendungs-ID mit:An application ID with:

    • Berechtigung zum Aufrufen von Azure AD und Graph-APIsPermission to call Azure AD and Graph APIs.
    • Berechtigungsbereichen, die für bestimmte Anwendungsaufgaben relevant sindPermission scopes relevant to the specific application tasks.
  • Benutzeranmeldeinformationen mit:User credentials with:

    • Zugriffsberechtigung für den Azure AD-Mandanten, der der Anwendung zugeordnet istPermission to access the Azure AD tenant associated with the application.
    • Rollenberechtigungen zur Unterstützung der AnwendungsberechtigungsbereicheRole permissions required to support the application permission scopes.
  • Der App durch den Endbenutzer erteilte Berechtigung zum Ausführen von Anwendungsaufgaben im Azure-MandantenThe end user to grant permission to the app to perform applications tasks for their Azure tenant.

Inhalt dieses ArtikelsThis article:

  • Erläuterung der Registrierung einer Anwendung mit Zugriff auf die Graph-API und relevante BerechtigungsrollenShows how to register an application with access to the Graph API and relevant permission roles.

  • Beschreiben der Intune Graph-API-BerechtigungsrollenDescribes the Intune Graph API permission roles.

  • Bereitstellen von Beispielen der Intune Graph-API-Authentifizierung für C# und PowerShellProvides Intune Graph API authentication examples for C# and PowerShell.

  • Beschreiben der Unterstützung mehrerer MandantenDescribes how to support multiple tenants

Weitere Informationen finden Sie unter:To learn more, see:

Registrieren von Apps für die Verwendung der Graph-APIRegister apps to use Graph API

So registrieren Sie eine App für die Verwendung der Graph-APITo register an app to use Graph API:

  1. Melden Sie sich beim Azure-Portal mit Administratoranmeldeinformationen an.Sign into the Azure portal using administrative credentials.

    Dazu können Sie Folgendes verwenden:As appropriate, you may use:

    • Die Administratorkonto des MandantenThe tenant admin account.
    • Ein Mandantenbenutzerkonto mit aktivierter Einstellung Benutzer können Anwendungen registrierenA tenant user account with the Users can register applications setting enabled.
  2. Wählen Sie im Menü Azure Active Directory > App-Registrierungen aus.From the menu, choose Azure Active Directory > App Registrations.

    The App registrations menu command

  3. Wählen Sie entweder Neue Anwendungsregistrierung, um eine neue Anwendung erstellen, oder eine vorhandene Anwendung.Either choose New application registration to create a new application or choose an existing application. (Wenn Sie eine vorhandene Anwendung wählen, überspringen Sie den nächsten Schritt.)(If you choose an existing application, skip the next step.)

  4. Geben Sie auf dem Blatt Erstellen Folgendes an:On the Create blade, specify the following:

    1. Einen Namen für die Anwendung (der angezeigt wird, wenn Benutzer sich anmelden).A Name for the application (displayed when users sign in).

    2. Werte für Anwendungstyp und Umleitungs-URI.The Application type and Redirect URI values.

      Diese unterscheiden sich entsprechend Ihren Anforderungen.These vary according to your requirements. Wenn Sie beispielsweise eine Azure AD-Authentifizierungsbibliothek (ADAL) verwenden, legen Sie Anwendungstyp auf Native und Umleitungs-URI auf urn:ietf:wg:oauth:2.0:oob fest.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

      Weitere Informationen finden Sie unter Authentifizierungsszenarien für Azure AD.To learn more, see Authentication Scenarios for Azure AD.

  5. Auf dem Blatt „Anwendung“:From the application blade:

    1. Notieren Sie sich den Wert von Anwendungs-ID.Note the Application ID value.

    2. Wählen Sie Einstellungen > API-Zugriff > Erforderliche Berechtigungen.Choose Settings > API access > Required permissions.

    The Required permissions setting

  6. Wählen Sie auf dem Blatt Erforderliche Berechtigungen nacheinander Hinzufügen > API-Zugriff hinzufügen > API auswählen.From the Required Permissions blade, choose Add > Add API access > Select an API.

    The Microsoft Graph setting

  7. Wählen Sie auf dem Blatt API auswählen nacheinander Microsoft Graph > Auswählen.From the Select an API blade, choose Microsoft Graph > Select. Das Blatt Zugriff aktivieren wird geöffnet, auf dem die für Ihre Anwendung verfügbaren Berechtigungsbereiche aufgeführt sind.The Enable access blade opens and lists permission scopes available to your application.

    Intune Graph API permission scopes

    Wählen Sie die für Ihre App erforderlichen Rollen, indem Sie ein Häkchen links neben den gewünschten Namen setzen.Choose the roles required for your app by placing a checkmark to the left of the relevant names. Weitere Informationen zu bestimmten Berechtigungsbereichen in Intune finden Sie unter Intune-Berechtigungsbereiche.To learn about specific Intune permission scopes, see Intune permission scopes. Weitere Informationen zu anderen Berechtigungsbereichen für die Graph-API finden Sie in der Microsoft Graph-Berechtigungsreferenz.To learn about other Graph API permission scopes, see Microsoft Graph permissions reference.

    Wählen Sie für optimale Ergebnisse nur so viele Rollen, wie für die Implementierung Ihrer Anwendung erforderlich sind.For best results, choose the fewest roles needed to implement your application.

    Klicken Sie abschließend auf Auswählen und Fertig, um Ihre Änderungen zu speichern.When finished, choose Select and Done to save you changes.

An diesem Punkt haben Sie auch folgende Möglichkeiten:At this point, you may also:

  • Sie können allen Mandantenkonten die Berechtigung zum Verwenden der App ohne Angabe von Anmeldeinformationen erteilen.Choose to grant permission for all tenant accounts to use the app without providing credentials.

    Zu diesem Zweck wählen Sie Berechtigungen und akzeptieren die Bestätigungsaufforderung.To do so, choose Grant permissions and accept the confirmation prompt.

    Wenn Sie die Anwendung zum ersten Mal ausführen, werden Sie aufgefordert, die App-Berechtigung für die ausgewählten Rollen zu erteilen.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

  • Sie können die App Benutzern außerhalb Ihres Mandanten zur Verfügung stellen.Make the app available to users outside your tenant. (Dies ist normalerweise nur für Partner erforderlich, die mehrere Mandanten/Organisationen unterstützen.)(This is typically only required for partners supporting multiple tenants/organizations.)

    Gehen Sie hierzu folgendermaßen vor:To do so:

    1. Wählen sie auf dem Blatt der Anwendung Manifest, um das Blatt Manifest bearbeiten zu öffnen.Choose Manifest from the application blade, which opens the Edit Manifest blade.

      The Edit manifest blade

    2. Ändern Sie den Wert der Einstellung availableToOtherTenants in true.Change the value of the availableToOtherTenants setting to true.

    3. Speichern Sie die Änderungen.Save your changes.

Intune-BerechtigungsbereicheIntune permission scopes

Azure AD und die Graph-API nutzen Berechtigungsbereiche zum Steuern des Zugriffs auf Unternehmensressourcen.Azure AD and the Graph API use permission scopes to control access to corporate resources.

Berechtigungsbereiche (auch OAuth-Bereiche genannt) steuern den Zugriff auf bestimmte Intune-Entitäten und deren Eigenschaften.Permission scopes (also called the OAuth scopes) control access to specific Intune entities and their properties. In diesem Abschnitt werden die Berechtigungsbereiche für Intune Graph-API-Funktionen zusammengefasst.This section summarizes the permission scopes for Intune Graph API features.

Weitere Informationen:To learn more:

Wenn Sie der Graph-API Berechtigung erteilen, können Sie angeben, dass die folgenden Bereiche den Zugriff auf die Intune-Funktionen steuern sollen. In der folgenden Tabelle werden die Intune Graph-API-Berechtigungsbereiche zusammengefasst.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. Die erste Spalte enthält den Namen der Funktion entsprechend der Anzeige im Azure-Portal, die zweite den Namen des Berechtigungsbereichs.The first column shows the name of the feature as displayed in the Azure portal and the second column provides the permission scope name.

Einstellung Zugriff aktivierenEnable Access setting BereichsnameScope name
Remoteaktionen mit Auswirkungen auf Benutzer auf Microsoft Intune-Geräten ausführenPerform user-impacting remote actions on Microsoft Intune devices DeviceManagementManagedDevices.PrivilegedOperations.AllDeviceManagementManagedDevices.PrivilegedOperations.All
Microsoft Intune-Geräte lesen und schreibenRead and write Microsoft Intune devices DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All
Microsoft Intune-Geräte lesenRead Microsoft Intune devices DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All
Einstellungen für die rollenbasierte Zugriffssteuerung von Microsoft Intune-Geräten lesen und schreibenRead and write Microsoft Intune RBAC settings DeviceManagementRBAC.ReadWrite.AllDeviceManagementRBAC.ReadWrite.All
Einstellungen für die rollenbasierte Zugriffssteuerung von Microsoft Intune-Geräten lesenRead Microsoft Intune RBAC settings DeviceManagementRBAC.Read.AllDeviceManagementRBAC.Read.All
Microsoft Intune-Apps lesen und schreibenRead and write Microsoft Intune apps DeviceManagementApps.ReadWrite.AllDeviceManagementApps.ReadWrite.All
Microsoft Intune-Apps lesenRead Microsoft Intune apps DeviceManagementApps.Read.AllDeviceManagementApps.Read.All
Microsoft Intune-Gerätekonfiguration und -Richtlinien lesen und schreibenRead and write Microsoft Intune Device Configuration and Policies DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All
Microsoft Intune-Gerätekonfiguration und -Richtlinien lesenRead Microsoft Intune Device Configuration and Policies DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All
Microsoft Intune-Konfiguration lesen und schreibenRead and write Microsoft Intune configuration DeviceManagementServiceConfig.ReadWrite.AllDeviceManagementServiceConfig.ReadWrite.All
Microsoft Intune-Konfiguration lesenRead Microsoft Intune configuration DeviceManagementServiceConfig.Read.AllDeviceManagementServiceConfig.Read.All

Die Tabelle enthält die Einstellungen in der Reihenfolge, in der sie im Azure-Portal angezeigt werden.The table lists the settings as they appear in the Azure portal. In den folgenden Abschnitten werden die Bereiche in alphabetischer Reihenfolge beschrieben.The following sections describe the scopes in alphabetical order.

Derzeit erfordern alle Intune-Berechtigungsbereiche Administratorzugriff.At this time, all Intune permission scopes require administrator access. Dies bedeutet, dass Sie zum Ausführen von Apps oder Skripts, die auf Intune Graph-API-Ressourcen zugreifen, entsprechende Anmeldeinformationen benötigen.This means you need corresponding credentials when running apps or scripts that access Intune Graph API resources.

DeviceManagementApps.Read.AllDeviceManagementApps.Read.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Apps lesenEnable Access setting: Read Microsoft Intune apps

  • Ermöglicht Lesezugriff auf die folgenden Eigenschaften und den Status der Entität:Permits read access to the following entity properties and status:

    • Mobile AppsMobile Apps
    • Kategorien mobiler AppsMobile App Categories
    • App-SchutzrichtlinienApp Protection Policies
    • App-KonfigurationenApp Configurations

DeviceManagementApps.ReadWrite.AllDeviceManagementApps.ReadWrite.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Apps lesen und schreibenEnable Access setting: Read and write Microsoft Intune apps

  • Ermöglicht die gleichen Vorgänge wie DeviceManagementApps.Read.AllAllows the same operations as DeviceManagementApps.Read.All

  • Ermöglicht zudem Änderungen an den folgenden Entitäten:Also permits changes to the following entities:

    • Mobile AppsMobile Apps
    • Kategorien mobiler AppsMobile App Categories
    • App-SchutzrichtlinienApp Protection Policies
    • App-KonfigurationenApp Configurations

DeviceManagementConfiguration.Read.AllDeviceManagementConfiguration.Read.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Gerätekonfiguration und -Richtlinien lesenEnable Access setting: Read Microsoft Intune device configuration and policies

  • Ermöglicht Lesezugriff auf die folgenden Eigenschaften und den Status der Entität:Permits read access to the following entity properties and status:

    • GerätekonfigurationDevice Configuration
    • GerätekonformitätsrichtlinieDevice Compliance Policy
    • BenachrichtigungenNotification Messages

DeviceManagementConfiguration.ReadWrite.AllDeviceManagementConfiguration.ReadWrite.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Gerätekonfiguration und -Richtlinien lesen und schreibenEnable Access setting: Read and write Microsoft Intune device configuration and policies

  • Ermöglicht die gleichen Vorgänge wie DeviceManagementConfiguration.Read.AllAllows the same operations as DeviceManagementConfiguration.Read.All

  • Apps können auch die folgenden Entitäten erstellen, zuweisen, löschen und ändern:Apps can also create, assign, delete, and change the following entities:

    • GerätekonfigurationDevice Configuration
    • GerätekonformitätsrichtlinieDevice Compliance Policy
    • BenachrichtigungenNotification Messages

DeviceManagementManagedDevices.PrivilegedOperations.AllDeviceManagementManagedDevices.PrivilegedOperations.All

  • Einstellung Zugriff aktivieren: Remoteaktionen mit Auswirkungen auf Benutzer auf Microsoft Intune-Geräten ausführenEnable Access setting: Perform user-impacting remote actions on Microsoft Intune devices

  • Erlaubt die folgenden Remoteaktionen auf einem verwalteten Gerät:Permits the following remote actions on a managed device:

    • AußerkraftsetzenRetire
    • ZurücksetzenWipe
    • Kennung zurücksetzen/wiederherstellenReset/Recover Passcode
    • RemotesperreRemote Lock
    • Modus für verlorene Geräte aktivieren/deaktivierenEnable/Disable Lost Mode
    • PC bereinigenClean PC
    • NeustartReboot
    • Benutzer von gemeinsam genutzten Gerät löschenDelete User from Shared Device

DeviceManagementManagedDevices.Read.AllDeviceManagementManagedDevices.Read.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Geräte lesenEnable Access setting: Read Microsoft Intune devices

  • Ermöglicht Lesezugriff auf die folgenden Eigenschaften und den Status der Entität:Permits read access to the following entity properties and status:

    • Verwaltetes GerätManaged Device
    • GerätekategorieDevice Category
    • Erkannte AppDetected App
    • RemoteaktionenRemote actions
    • Informationen zu SchadsoftwareMalware information

DeviceManagementManagedDevices.ReadWrite.AllDeviceManagementManagedDevices.ReadWrite.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Geräte lesen und schreibenEnable Access setting: Read and write Microsoft Intune devices

  • Ermöglicht die gleichen Vorgänge wie DeviceManagementManagedDevices.Read.AllAllows the same operations as DeviceManagementManagedDevices.Read.All

  • Apps können auch die folgenden Entitäten erstellen, löschen und ändern:Apps can also create, delete, and change the following entities:

    • Verwaltetes GerätManaged Device
    • GerätekategorieDevice Category
  • Die folgenden Remoteaktionen sind ebenfalls zulässig:The following remote actions are also allowed:

    • Geräte suchenLocate devices
    • Aktivierungssperre umgehenBypass activation lock
    • Remoteunterstützung anfordernRequest remote assistance

DeviceManagementRBAC.Read.AllDeviceManagementRBAC.Read.All

  • Einstellung Zugriff aktivieren: Einstellungen für die rollenbasierte Zugriffssteuerung von Microsoft Intune-Geräten lesenEnable Access setting: Read Microsoft Intune RBAC settings

  • Ermöglicht Lesezugriff auf die folgenden Eigenschaften und den Status der Entität:Permits read access to the following entity properties and status:

    • RollenzuweisungenRole Assignments
    • RollendefinitionenRole Definitions
    • RessourcenvorgängeResource Operations

DeviceManagementRBAC.ReadWrite.AllDeviceManagementRBAC.ReadWrite.All

  • Einstellung Zugriff aktivieren: Einstellungen für die rollenbasierte Zugriffssteuerung von Microsoft Intune-Geräten lesen und schreibenEnable Access setting: Read and write Microsoft Intune RBAC settings

  • Ermöglicht die gleichen Vorgänge wie DeviceManagementRBAC.Read.AllAllows the same operations as DeviceManagementRBAC.Read.All

  • Apps können auch die folgenden Entitäten erstellen, zuweisen, löschen und ändern:Apps can also create, assign, delete, and change the following entities:

    • RollenzuweisungenRole Assignments
    • RollendefinitionenRole Definitions

DeviceManagementServiceConfig.Read.AllDeviceManagementServiceConfig.Read.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Konfiguration lesenEnable Access setting: Read Microsoft Intune configuration

  • Ermöglicht Lesezugriff auf die folgenden Eigenschaften und den Status der Entität:Permits read access to the following entity properties and status:

    • GeräteregistrierungDevice Enrollment
    • Apple Push Notification-ZertifikatApple Push Notification Certificate
    • Apple-Programm zur GeräteregistrierungApple Device Enrollment Program
    • Apple Volume Purchase ProgramApple Volume Purchase Program
    • Exchange-ConnectorExchange Connector
    • GeschäftsbedingungenTerms and Conditions
    • Verwaltung von Ausgaben für TelekommunikationTelecoms Expense Management
    • PKI in der CloudCloud PKI
    • BrandingBranding
    • Mobile Threat DefenseMobile Threat Defense

DeviceManagementServiceConfig.ReadWrite.AllDeviceManagementServiceConfig.ReadWrite.All

  • Einstellung Zugriff aktivieren: Microsoft Intune-Konfiguration lesen und schreibenEnable Access setting: Read and write Microsoft Intune configuration

  • Ermöglicht die gleichen Vorgänge wie „DeviceManagementServiceConfig.Read.All_“Allows the same operations as DeviceManagementServiceConfig.Read.All_

  • Apps können auch die folgenden Intune-Features konfigurieren:Apps can also configure the following Intune features:

    • GeräteregistrierungDevice Enrollment
    • Apple Push Notification-ZertifikatApple Push Notification Certificate
    • Apple-Programm zur GeräteregistrierungApple Device Enrollment Program
    • Apple Volume Purchase ProgramApple Volume Purchase Program
    • Exchange-ConnectorExchange Connector
    • GeschäftsbedingungenTerms and Conditions
    • Verwaltung von Ausgaben für TelekommunikationTelecoms Expense Management
    • PKI in der CloudCloud PKI
    • BrandingBranding
    • Mobile Threat DefenseMobile Threat Defense

Beispiele für die Azure AD-AuthentifizierungAzure AD authentication examples

In diesem Abschnitt wird gezeigt, wie Azure AD in Ihre C#- und PowerShell-Projekte integriert wird.This section shows how to incorporate Azure AD into your C# and PowerShell projects.

Bei jedem Beispiel müssen Sie eine Anwendungs-ID angeben, die mindestens den Berechtigungsbereich DeviceManagementManagedDevices.Read.All hat (siehe oben).In each example, you'll need to specify an application ID that has at least the DeviceManagementManagedDevices.Read.All permission scope (discussed earlier).

Wenn Sie eines der Beispiel testen, erhalten Sie ggf. die HTTP-Statusfehlermeldung 403 (Unzulässig):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"
    }
  }
}

Wenn dies erfolgt, überprüfen Sie Folgendes:If this happens, verify that:

  • Ob Sie die Anwendungs-ID in eine ID geändert haben, die für das Verwenden der Graph-API und des Berechtigungsbereichs DeviceManagementManagedDevices.Read.All autorisiert ist.You've updated the application ID to one authorized to use the Graph API and the DeviceManagementManagedDevices.Read.All permission scope.

  • Ob die Anmeldeinformationen Ihres Mandanten administrative Funktionen unterstützen.Your tenant credentials support administrative functions.

  • Ob Ihr Code den gezeigten Beispielen ähnlich ist.Your code is similar to the displayed samples.

Authentifizieren von Azure AD in C#Authenticate Azure AD in C#

Dieses Beispiel zeigt, wie Sie C# zum Abrufen einer Liste von Geräten verwenden, die Ihrem Intune-Konto zugeordnet sind.This example shows how to use C# to retrieve a list of devices associated with your Intune account.

  1. Starten Sie Visual Studio, und erstellen Sie dann ein neues Visual C#-App-Konsolenprojekt (.NET Framework).Start Visual Studio and then create a new Visual C# Console app (.NET Framework) project.

  2. Geben Sie einen Namen für das Projekt und nach Wunsch weitere Details ein.Enter a name for your project and provide other details as desired.

    Creating a C# console app project in Visual Studio

  3. Fügen Sie im Projektmappen-Explorer das NuGet-Paket mit der Microsoft ADAL dem Projekt hinzu.Use the Solution Explorer to add the Microsoft ADAL NuGet package to the project.

    1. Klicken Sie mit der rechten Maustaste auf den Projektmappen-Explorer.Right-click the Solution Explorer.
    2. Wählen Sie NuGet-Pakete verwaltenChoose Manage NuGet Packages… > Durchsuchen aus.> Browse.
    3. Wählen Sie Microsoft.IdentityModel.Clients.ActiveDirectory aus, und klicken Sie anschließend auf Installieren.Select Microsoft.IdentityModel.Clients.ActiveDirectory and then choose Install.

    Selecting the Azure AD identity model module

  4. Fügen Sie am Anfang der Datei Program.cs die folgenden Anweisungen ein:Add the following statements to the top of Program.cs:

    using Microsoft.IdentityModel.Clients.ActiveDirectory;</p>
    using System.Net.Http;
    
  5. Fügen Sie eine Methode zum Erstellen des Autorisierungsheaders hinzu: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();
    

    Ändern Sie den Wert von application_ID entsprechend in einen Wert, der dem Berechtigungsbereich DeviceManagementManagedDevices.Read.All mindestens erteilt wurde (siehe oben).Remember to change the value of application_ID to match one granted at least the DeviceManagementManagedDevices.Read.All permission scope, as described earlier.

  6. Fügen Sie eine Methode zum Abrufen der Geräteliste hinzu: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. Ändern Sie Main so, dass GetMyManagedDevices aufgerufen wird:Update Main to call GetMyManagedDevices:

    string devices = GetMyManagedDevices().GetAwaiter().GetResult();
    Console.WriteLine(devices);
    
  8. Kompilieren Sie Ihr Programm, und führen Sie es aus.Compile and run your program.

Wenn Sie das Programm erstmals ausführen, sollten Sie zwei Eingabeaufforderungen erhalten.When you first run your program, you should receive two prompts. Die erste fordert Ihre Anmeldeinformationen an, die zweite erteilt Berechtigungen für die Anforderung managedDevices.The first requests your credentials and the second grants permissions for the managedDevices request.

Zur Bezugnahme sehen Sie hier das vollständige Programm: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");
        }
    }
}

Authentifizieren von Azure AD (PowerShell)Authenticate Azure AD (PowerShell)

Das folgende PowerShell-Skript verwendet das AzureAD-PowerShell-Modul zur Authentifizierung.The following PowerShell script uses the AzureAD PowerShell module for authentication. Weitere Informationen finden Sie unter Azure Active Directory PowerShell, Version 2 und Intune PowerShell-Beispiele.To learn more, see Azure Active Directory PowerShell Version 2 and the Intune PowerShell examples.

In diesem Beispiel aktualisieren Sie den Wert von $clientID so, dass er einer gültigen Anwendungs-ID entspricht.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
}

Unterstützen mehrerer Mandanten und PartnerSupport multiple tenants and partners

Wenn Organisationen mit eigenen Azure AD-Mandanten von Ihrer Organisation unterstützt werden, möchten Sie ggf. Ihren Clients erlauben, Ihre Anwendung in ihren entsprechenden Mandanten zu nutzen.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.

Gehen Sie hierzu folgendermaßen vor:To do so:

  1. Stellen Sie sicher, dass das Konto im Azure AD-Zielmandanten vorhanden ist.Verify that the client account exists in the target Azure AD tenant.

  2. Stellen Sie sicher, dass Ihr Mandantenkonto die Registrierung von Anwendungen durch Benutzer zulässt (siehe Benutzereinstellungen).Verify that your tenant account allows users to register applications (see User settings).

  3. Richten Sie eine Beziehung zwischen jedem Mandanten ein.Establish a relationship between each tenant.

    Gehen Sie hierfür so vor:To do so, either:

    a.a. Definieren Sie im Microsoft Partner Center eine Beziehung mit Ihrem Client und seiner E-Mail-Adresse.Use the Microsoft Partner Center to define a relationship with your client and their email address.

    b.b. Laden Sie den Benutzer ein, Gast Ihres Mandanten zu werden.Invite the user to become a guest of your tenant.

So laden Sie den Benutzer ein, Gast Ihres Mandanten zu werdenTo invite the user to be a guest of your tenant:

  1. Wählen Sie Gastbenutzer hinzufügen im Bereich Schnellaufgaben aus.Choose Add a guest user from the Quick tasks panel.

    Use Quick Tasks to add a guest user

  2. Geben Sie die E-Mail-Adresse des Clients ein, und fügen Sie (optional) eine personalisierte Nachricht für die Einladung hinzu.Enter the client's email address and (optionally) add a personalized message for the invite.

    Inviting an external user as a guest

  3. Klicken Sie auf Einladen.Choose Invite.

Dem Benutzer wird eine Einladung gesendet.This sends an invite to the user.

A sample guest invitation

Der Benutzer muss auf den Link Erste Schritte klicken, um Ihre Einladung anzunehmen.The user needs to choose the Get Started link to accept your invitation.

Nachdem die Beziehung eingerichtet oder Ihre Einladung akzeptiert wurde, fügen Sie das Benutzerkonto der Verzeichnisrolle hinzu.When the relationship is established (or your invitation has been accepted), add the user account to the Directory role.

Denken Sie daran, den Benutzer bei Bedarf anderen Rollen hinzuzufügen.Remember to add the user to other roles as needed. Um beispielsweise dem Benutzer das Verwalten von Intune-Einstellungen zu erlauben, müssen Sie entweder ein globaler Administrator oder Intune-Dienstadministrator sein.For example, to allow the user to manage Intune settings, they need to be either a Global Administrator or an Intune Service administrator.

Ferner gilt Folgendes:Also:

  • Verwenden Sie http://portal.office.com, um Ihrem Benutzerkonto eine Intune-Lizenz zuzuweisen.Use http://portal.office.com to assign an Intune license to your user account.

  • Ändern Sie den Anwendungscode so, dass die Azure AD-Mandantendomäne des Clients und nicht Ihre eigene authentifiziert wird.Update application code to authenticate to the client's Azure AD tenant domain, rather than your own.

    Angenommen, die Mandantendomäne heißt contosopartner.onmicrosoft.com und die des Clients northwind.onmicrosoft.com. Sie müssen dann Ihren Code so ändern, dass Sie beim Mandanten des Clients authentifiziert werden.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.

    Um dies in einer C#-Anwendung basierend auf dem vorherigen Beispiel zu tun, ändern Sie den Wert der Variablen 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/";
    

    into

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