Teilen über


Migrieren der .NET-Clientbibliothek zu Microsoft Graph

Dieser Artikel ist Teil von Schritt 3: Überprüfen von App-Details in der Checklistenreihe zur Planung der Azure AD Graph-App-Migration .

Wenn Ihre App derzeit die Graph-Clientbibliothek von Azure Active Directory (Azure AD) verwendet, wechseln Sie zur Microsoft Graph .NET-Clientbibliothek.

In diesem Artikel erfahren Sie die folgenden allgemeinen Schritte für die Migration zur Microsoft Graph .NET-Clientbibliothek:

  • Erstellen eines Microsoft Graph-Clients mit einem Zugriffstoken (das Sie entweder mithilfe der Azure Active Directory-Authentifizierungsbibliothek (ADAL) oder der Microsoft-Authentifizierungsbibliothek (MSAL) abrufen können)
  • Formulieren von Anforderungen
  • Verwenden von Abfrage-Generatoren
  • Behandeln von Sammlungen und Paging

Übersicht über die Migrationsschritte

In den folgenden Schritten wird davon ausgegangen, dass Ihre App ADAL verwendet, um Zugriffstoken zum Aufrufen von Azure AD Graph abzurufen. Der Wechsel zu MSAL kann als separater Schritt durchgeführt werden, der in der Migration zu MSAL beschrieben wird.

Aktualisieren der Ressourcen-URL

Aktualisieren Sie resourceUrl, um ein Zugriffstoken für Microsoft Graph abzurufen.

Von:

https://graph.windows.net

An:

https://graph.microsoft.com

Aktualisieren von Verweisen

Aktualisieren Sie in Ihrer App Verweise auf die Microsoft Graph-Clientbibliothek, indem Sie Folgendes ändern:

Von:

using Microsoft.Azure.ActiveDirectory.GraphClient;

An:

using Microsoft.Graph;

Aktualisieren von Paketen und Abhängigkeiten

Verwenden Sie Ihren Paket-Manager, um das Microsoft Graph-NuGet-Paket herunterzuladen und zu aktualisieren und Abhängigkeiten zu aktualisieren.

Clientkonstruktor aktualisieren

Aktualisieren Sie Ihren Clientkonstruktor, um anstelle von ActiveDirectoryClientzu GraphServiceClient erstellen. In den folgenden Codeausschnitten wird davon ausgegangen, dass Ihre App die AcquireTokenAsyncForUser() -Methode verwendet, um neue Token abzurufen. Eine Definition für diese Methode finden Sie im Beispiel active-directory-dotnet-graphapi-console.

Von:

ActiveDirectoryClient client = new ActiveDirectoryClient(serviceRoot,
async () => await AcquireTokenAsyncForUser());

An:

GraphServiceClient graphClient = new GraphServiceClient(serviceRoot,
    new DelegateAuthenticationProvider(async (requestMessage) => {
        var token = await AcquireTokenAsyncForUser();
        requestMessage.Headers.Authorization = new
            AuthenticationHeaderValue("bearer", token);
    }));

Für die Microsoft Graph-Clientbibliothek enthält der serviceRoot Wert auch die Versionsnummer. Derzeit ist https://graph.microsoft.com/v1.0dieser Wert .

Aktualisieren der Anforderungssyntax

Aktualisieren Sie Anforderungen, um die Syntax des Microsoft Graph-Clientanforderungs-Generators zu verwenden, indem Sie Folgendes ändern:

Von:

signedInUser = (User)await client.Me.ExecuteAsync();

An:

signedInUser = (User)await client.Me.Request().GetAsync();

Die Azure AD Graph-Clientbibliothek unterstützte LINQ-basierte Abfragesyntax. Dies ist in der Microsoft Graph-Clientbibliothek jedoch nicht der Fall. Daher müssen Sie die relevanten Abfragen in einen RESTful-Ausdruck konvertieren. Ändern Sie dazu Folgendes:

Von:

var groups = await
client.Groups.Where(g => g.DisplayName.StartsWith("a")).ExecuteAsync();

An:

var groups = await
client.Groups.Request().Filter("startswith(displayName,'a')").GetAsync();

Verarbeiten von Sammlungen und Paging

Wenn Ihre Codepages Sammlungen durchlaufen, sind Anpassungen erforderlich. Das folgende Beispiel vergleicht und kontrastiert das Abrufen einer Gruppe und das Durchlaufen ihrer Mitglieder ( 5 gleichzeitig). Während der Code für Azure AD Graph ein Fetcher-Konstrukt erfordert, um die Mitglieder einer Gruppe abzurufen, hat Microsoft Graph keine solche Anforderung. Der Code ist abgeschnitten und zeigt nur Benutzermember an, try/catch- und error-Bedingungen werden nicht angezeigt, und die Codeausschnitte gelten für eine Singlethread-Konsolen-App.

Ändern Sie beispielsweise den folgenden Code mithilfe der Azure AD Graph .NET-Clientbibliothek:

Group retrievedGroup = client.Groups.
    Where(g => g.ObjectId.Equals(id)).ExecuteAsync().Result;
IGroupFetcher retrievedGroupFetcher = (IGroupFetcher) retrievedGroup;

var membersPage = retrievedGroupFetcher.Members.Take(5).ExecuteAsync().Result;
Console.WriteLine(" Members:");
do
{
    List<IDirectoryObject> members = membersPage.CurrentPage.ToList();
    foreach (IDirectoryObject member in members)
    {
        if (member is User)
        {
            User memberUser = (User)member;
            Console.WriteLine("        User: {0} ", memberUser.DisplayName);
        }
    }
    membersPage = membersPage.GetNextPageAsync().Result;
} while (membersPage != null);

Verwenden Sie den folgenden Code, indem Sie die Microsoft Graph .NET-Clientbibliothek verwenden:

var membersPage = client.Groups[id].Members.Request().Top(5).GetAsync().Result;
Console.WriteLine(" Members:");
do
{
    List<DirectoryObject> members = membersPage.CurrentPage.ToList();
    foreach (DirectoryObject member in members)
    {
        if (member is User)
        {
            User memberUser = (User)member;
            Console.WriteLine("        User: {0} ", memberUser.DisplayName);
        }
    }
    if (membersPage.NextPageRequest != null)
        membersPage = membersPage.NextPageRequest.GetAsync().Result;
    else membersPage = null;
} while (membersPage != null);

Testen, überprüfen, auflösen

Erstellen und beheben Sie alle Ressourcen-, Eigenschafts-, Navigations- und Dienstaktionsfehler im Zusammenhang mit Namensänderungen.

Ressourcen

  • Die C#-Konsolenausschnitt-App hebt weitere Unterschiede zwischen der Microsoft Graph-Clientbibliothek und der Azure AD Graph-Clientbibliothek hervor.
  • Die Azure AD Graph-Clientbibliothek unterstützt nur die .NET-Plattform. Die Microsoft Graph-Clientbibliothek unterstützt jedoch zusätzliche Plattformen und Sprachen.

Nächster Schritt