Anforderungsunterschiede zwischen Azure AD Graph und Microsoft Graph
Dieser Artikel ist Teil von Schritt 1: Überprüfen der API-Unterschiede beim Prozess zum Migrieren von Apps.
Microsoft Graph und die Azure Active Directory-Graph-API (Azure AD) sind beide REST-APIs und unterstützen jeweils OData-Konventionen für Abfrageparameter. Die Syntax variiert jedoch zwischen diesen beiden APIs.
Verwenden Sie graph-Explorer , um diese Anforderungsmuster für Ihre eigenen Daten zu testen, da dies eine hervorragende Möglichkeit ist, sich über die Unterschiede zwischen Anforderung und Antwort zu informieren.
Grundlegende Anforderungen
In der folgenden Tabelle werden die wichtigsten Anforderungsunterschiede zwischen den beiden APIs hervorgehoben:
Anfragedetails | Azure AD Graph | Microsoft Graph |
---|---|---|
Anforderungssyntax | https://graph.windows.net/{tenant_id}/ {resource}?{version}&query-parameters |
https://graph.microsoft.com/ {version}/{resource}?query-parameters |
Dienstendpunkte: | ||
-Globalen | https://graph.windows.net |
https://graph.microsoft.com |
- US Gov L4 | https://graph.microsoftazure.us |
https://graph.microsoft.us |
– US Gov L5 (DOD) | https://graph.microsoftazure.us |
https://dod-graph.microsoft.us |
-Deutschland | https://graph.cloudapi.de |
https://graph.microsoft.de |
- China (21Vianet) | https://graph.chinacloudapi.cn |
https://microsoftgraph.chinacloudapi.cn |
{tenant_id} | Geben Sie die ID des Mandanten in der Anforderung an. | Es ist optional, eine Mandanten-ID in der Anforderung anzugeben, da sie aus dem Zugriffstoken abgeleitet wird. Wenn Sie die Mandanten-ID angeben, wechselt sie zwischen und {version} in der {resource} Anforderungs-URL. |
{version} | Geben Sie die Releaseversion von Azure AD Graph in der Anforderung mithilfe eines erforderlichen Abfrageparameters an. | Geben Sie die Releaseversion von Microsoft Graph in der Anforderung als Teil des URL-Pfads direkt hinter dem Dienstendpunkt an. |
Sie können weiterhin dieselben Abfrageparameter in Microsoft Graph wie Azure AD Graph verwenden.
Beispiel für einen Anforderungsvergleich
Angenommen, Sie möchten eine Liste aller Benutzer mit Namen, die mit "Dan" beginnen.
In Azure AD Graph können Sie diese Anforderung verwenden:
GET https://graph.windows.net/contoso.com/users?$filter=startswith(givenName,'Dan')&api-version=1.6
Oder
GET https://graph.windows.net/myOrganization/users?$filter=startswith(givenName,'Dan')&api-version=1.6
Diese Anforderung:
- Zielversion 1.6 von Azure AD Graph.
- Gibt als Mandanten-ID an
contoso.com
. Die Alternative zeigt die Verwendung eines AliasmyOrganization
basierend auf der Mandanten-ID im Zugriffstoken. - Ruft die Ressource users auf.
- Verwendet den
$filter
Abfrageparameter, um die Antwort auf bestimmte Namen zu beschränken, die mitDan
beginnen.
Zu den Ergebnissen gehören Benutzer mit Namen wie Daniel, Danforth, Danielle, Danerys usw.
Eine ähnliche Anforderung für Microsoft Graph wäre:
GET https://graph.microsoft.com/v1.0/users?$filter=startswith(givenName,'Dan')
Hier:
- Die Version ist
v1.0
. - Die Mandanten-ID wird aus dem Zugriffstoken abgeleitet (nicht angezeigt).
- Die Ressource und
$filter
der Abfrageparameter sind identisch mit der Azure AD-Abfrage.
HINWEIS: Wenn Sie die Azure AD Graph .NET-Clientbibliothek verwenden, finden Sie unter .NET-Clientbibliotheken spezifischere Strategien und Unterstützung für den Wechsel zur Microsoft Graph .NET-Clientbibliothek.
Schlüsselbezeichner: objectId vs. id
In Azure AD Graph verfügen alle Entitätsressourcentypen über einen eindeutigen Bezeichner (oder Schlüssel) namens objectId. Derselbe Bezeichner wird in Microsoft Graph größtenteils (sofern nicht anders angegeben) als ID bezeichnet.
Standardeigenschaften und $select
Verwenden Sie den $select
Abfrageparameter in GET-Anforderungen, um die Antwort so anzupassen, dass sie alle Eigenschaften enthält, die Ihre App benötigt.
Microsoft Graph-Get- oder List-Vorgänge für Benutzer- oder Gruppenressourcen gibt nur eine Teilmenge aller Eigenschaften zurück, die als Standardeigenschaften bezeichnet werden. Die Standardeigenschaften stellen die am häufigsten verwendeten Eigenschaften für eine Ressource dar. Auf der anderen Seite gibt Azure AD Graph den vollständigen Satz aller Eigenschaften für die jeweilige Ressource zurück.
Um andere Eigenschaften in v1.0 abzurufen, muss Ihre App diese mithilfe des $select
Abfrageparameters explizit anfordern. Dies schließt alle Verzeichnisschemaerweiterungen ein, die Ihre App möglicherweise verwendet. Es ist eine bewährte Methode, nur die Eigenschaften anzufordern, die Ihre App wirklich benötigt.
Um den Unterschied zu veranschaulichen, verwenden Sie graph-Explorer, um die folgenden Anforderungen auszuführen und die verschiedenen Antworten zu vergleichen.
GET https://graph.microsoft.com/v1.0/me/
GET https://graph.microsoft.com/beta/me/
Überprüfen Sie die Antworten jeder Abfrage. Sie werden feststellen, dass Adressinformationen von der /beta-Version zurückgegeben werden, aber nicht von der Version /v1.0. Das liegt daran, dass die Adresseigenschaften nicht im Standardeigenschaftensatz enthalten sind.
Wenn Ihre App auf den Adresseigenschaften basiert, müssen Sie Ihre v1.0-Anforderungen aktualisieren, um den $select
Abfrageparameter einzuschließen:
https://graph.microsoft.com/v1.0/me/?$select=displayName,streetAddress,city,state,postalCode
Die Antwort für diese Anforderung würde die Adresseigenschaften enthalten. Es enthält auch die displayName-Eigenschaft , aber nur, weil sie vom Abfrageparameter angegeben wurde.
Weitere Informationen:
- Standardeigenschaften für Benutzer, siehe Benutzer
- Der
$select
Parameter und andere unterstützte ODATA-Abfrageparameter finden Sie unter Verwenden von Abfrageparametern zum Anpassen von Antworten. - Diese und andere empfohlene Optimierungen finden Sie unter Bewährte Methoden.
Beziehungen und Navigationseigenschaften
Beziehungen (oder Navigationseigenschaften) sind ein wichtiges Konzept in Azure AD Graph und Microsoft Graph und erstellen ein Netzwerk verwandter Ressourcen. Beispielsweise erweitern die Eigenschaften manager und directReports die Benutzerressource, um eine Organisationshierarchie bereitzustellen.
Beziehungen definieren auch Mitgliedschaften, z. B. die Gruppen, zu der ein Benutzer gehört, die Mitglieder einer Gruppe oder einer Verzeichnisrolle usw.
Azure AD Graph-Anforderungen verwenden $links
, um Beziehungen zwischen Ressourcen anzugeben. In Microsoft Graph wird stattdessen die OData v4.01-Notation $ref
verwendet.
Die folgende Tabelle enthält mehrere Beispiele:
Aufgabe | Azure AD Graph | Microsoft Graph |
---|---|---|
Mitglied hinzufügen | POST /groups/{id}/$links/members |
POST /groups/{id}/members/$ref |
Memberlinks auflisten | GET /groups/{id}/$links/members |
GET /groups/{id}/members/$ref |
Mitglieder auflisten | GET /groups/{id}/members |
GET /groups/{id}/members |
Mitglied entfernen | DELETE /groups/{id}/$links/members/{id} |
DELETE /groups/{id}/members/{id}/$ref |
Wenn Sie Ihre Apps zu Microsoft Graph migrieren, suchen Sie nach Anforderungen, die zum Zuordnen von Ressourcen verwenden $links
. Ändern Sie diese stattdessen, um sie zu verwenden $ref
.
Nächste Schritte
- Erfahren Sie mehr über Die Unterschiede zwischen Den Dienstfeatures zwischen Azure AD Graph und Microsoft Graph.
- Überprüfen Sie die Prüfliste erneut.