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, die OData-Konventionen für Abfrageparameter unterstützen. Die Syntax variiert jedoch zwischen diesen beiden APIs.
Verwenden Sie Graph Explorer, um diese Anforderungsmuster anhand Ihrer eigenen Daten auszuprobieren und sich über die Unterschiede zwischen Anforderung und Antwort zu informieren, bevor Sie Ihren Code aktualisieren.
Grundlegende Anforderungen
In der folgenden Tabelle werden die Standard 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 (eingestellt) | https://graph.cloudapi.de |
https://graph.microsoft.de |
- China (21Vianet) | https://graph.chinacloudapi.cn |
https://microsoftgraph.chinacloudapi.cn |
{tenant_id} | Geben Sie die Mandanten-ID oder den Domänennamen in der Anforderung an. | Optional. Die Mandanten-ID wird aus dem Zugriffstoken abgeleitet. Wenn Sie die Mandanten-ID angeben, verwenden Sie die folgende Syntax: https://graph.microsoft.com/{version}/{tenant_id}/{resource}?query-parameters . |
{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. |
Die Abfrageparametersyntax ist für Microsoft Graph und Azure AD Graph identisch. Microsoft Graph unterstützt jedoch mehr Abfrageparameter und Abfragefunktionen als Azure AD Graph.
Beispiel für einen Anforderungsvergleich
Angenommen, Sie möchten eine Liste aller Benutzer, deren Namen mit "Dan" im Contoso-Mandanten beginnen. Die folgende Tabelle zeigt die Anforderungsunterschiede zwischen Azure AD Graph und Microsoft Graph.
Azure AD Graph | Microsoft Graph |
---|---|
GET https://graph.windows.net/contoso.com/users?$filter=startswith(givenName,'Dan')&api-version=1.6 |
GET https://graph.microsoft.com/v1.0/users?$filter=startswith(givenName,'Dan') |
Primärschlüsselbezeichner: objectId vs. id
In Azure AD Graph verfügen alle Entitätsressourcentypen über einen eindeutigen Bezeichner (oder Primärschlüssel) namens objectId. Für die meisten Entitäten (sofern nicht anders angegeben) wird dieser Bezeichner in Microsoft Graph als ID bezeichnet.
Zusätzlich zum Primärschlüssel unterstützen einige Entitäten einen alternativen Schlüsselbezeichner. Beispielsweise unterstützen die Application - und servicePrincipal-Ressourcen in Microsoft Graph einen alternativen Schlüsselbezeichner für ihre appId-Eigenschaft .
Standardeigenschaften und $select
Es ist eine bewährte Methode, nur die Eigenschaften anzufordern, die Ihre App wirklich benötigt. Verwenden Sie den $select
Abfrageparameter in GET-Anforderungen, um die Antwort so anzupassen, dass sie nur die Eigenschaften enthält, die Ihre App benötigt.
In einigen Fällen in Microsoft Graph, z. B. bei den GET - oder LIST-Vorgängen für Benutzer - und Gruppenressourcen , wird nur eine Teilmenge aller Eigenschaften zurückgegeben. Diese Standardeigenschaften stellen die am häufigsten verwendeten Eigenschaften für die Ressourcen dar. Auf der anderen Seite gibt Azure AD Graph den vollständigen Satz aller Eigenschaften für die jeweilige Ressource zurück. Wenn die Ressource nur die Standardeigenschaften zurückgibt, muss Ihre App explizit andere Eigenschaften mithilfe des Abfrageparameters $select
anfordern.
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/
Beachten Sie den Unterschied in den Antworten. Die /beta
Version gibt mehr Eigenschaften als die /v1.0
Version zurück. Wenn Ihre App z. B. auf der streetAddress-Eigenschaft basiert, müssen Sie Ihre v1.0
Anforderungen so aktualisieren, dass der $select
Abfrageparameter verwendet wird, um die streetAddress-Eigenschaft zusätzlich zu anderen Eigenschaften anzufordern, die die App benötigt. Zum Beispiel:
https://graph.microsoft.com/v1.0/me?$select=displayName,streetAddress,city,state,postalCode
Weitere Informationen:
- Standardeigenschaften für Benutzer- und Gruppenressourcen, siehe Benutzer und Gruppen
- Der
$select
Parameter und andere unterstützte ODATA-Abfrageparameter finden Sie unter Verwenden von Abfrageparametern zum Anpassen von Antworten. - Weitere 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. Microsoft Graph verwendet stattdessen die OData v4.01-Notation $ref
.
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 |
Aktualisieren Sie beim Migrieren Ihrer Apps zu Microsoft Graph Verweise, die verwenden $links
, um stattdessen ressourcen zu verwenden $ref
.