blog.atwork.at

news and know-how about microsoft, technology, cloud and more.

Microsoft Graph versus GraphAPI

Microsoft hat aus den verschiedensten Cloud-API's ein zentrales Service geschmiedet: Den Microsoft Graph, der AAD und Office365 in einem Service vereint. Und natürlich gibt es auch noch die älteren APIs, etwa die Graph API... Was sind die Unterschiede?

Nun, historisch gesehen wurde aus der Azure Active Directory Graph API und der (Unified) Office 365 API der Microsoft Graph, der den Zugriff auf Azure Active Directory Objekte wie Users und Groups und Zugriff auf die Office 365 Services wie Mails, Files, Calendars, Contacts etc. ermöglicht.

Microsoft Graph

Die kurze Botschaft lautet: "One endpoint to rule them all": https://graph.microsoft.io/

image

Microsoft Graph stellt OData Services bereit. Die wichtigsten Features auf einen Blick zusammengefasst:

  • Es gibt einen universellen Endpoint für die verschiedenen Microsoft Cloud Services. Dieser beginnt immer mit https://graph.microsoft.com
  • Dahinter wird wie gewohnt die Version, die Methode und die Abfrage angehängt, etwa für meine Mails: https://graph.microsoft.com/v1.0/me/messages. Manche Dienste sind derzeit noch als /beta/ Version verfügbar, etwa https://graph.microsoft.com/beta/me/tasks
  • Zwischen den Entitäten kann beliebig gewechselt werden, es gibt nur mehr ein einziges Access Token.
  • Die Services sind durch einfach "Navigation" (sprich Adresse) erreichbar und liefern immer ein Resultset zurück.
  • Microsoft wird den Microsoft Graph immer weiter ausbauen (etwa durch den Office Graph, etc.)

Die Webseite Overview of Microsoft Graph informiert grundsätzlich über die Funktionalität und zeigt die Architektur des Microsoft Graph.

image

Die folgende Liste zeigt häufig benötigte Queries gegen MS Graph.

image

AAD Graph

Die "alte" GraphAPI (aktuell ist Version 1.6, siehe auch hier) ermöglicht indessen nur Zugriff auf die AAD-Objekte - ohne Office 365 Zugriff. Der Endpoint dafür sieht so aus: https://graph.windows.net/contoso.com/users.

Eine Beispiel-Abfrage: https://graph.windows.net/contoso.com/users?api-version=2013-11-08&$filter=accountEnabled eq true and (userPrincipalName eq 'jonlawr@contoso.com' or mail eq 'johndoe@contoso.com')

Eine Liste der GraphAPI Funktionen kann hier abgerufen werden: Azure AD Graph API reference.

Unterschiede

Wenn es nun um User und Gruppenmanagement geht, können sowohl MS Graph als auch die Graph API (AAD Graph) verwendet werden. Natürlich stellt sich somit auch die Frage, welches Service für eigene Apps verwendet werden soll.

Wir haben nachgeforscht: Die Aussage aus dem AAD Team bezüglich der Verwendung von MSFT Graph und Graph API ist sinngemäß:

Microsoft investiert in den Ausbau von Microsoft Graph. Wenn alle Funktionen, die benötigt werden, mit dem Microsoft Graph abgedeckt werden, sollte dieses Service verwendet werden. Umgekehrt wird Microsoft die GraphAPI noch länger weiter pflegen, jedoch ist kein großes Investment in dieses Service mehr geplant.

Hierzu noch der Hinweis, dass viele Services wie etwa Azure ARM Templates / PowerShell im Hintergrund für viele Operationen die GraphAPI verwenden. Dies wird eine wesentlicher Grund sein, warum die GraphAPI noch länger weiter existieren...muss.

Der Artikel über die Azure Active Directory Graph API liefert auch gleich am Anfang die Info, dass MS Graph die GraphAPI abgelöst hat. Es gibt allerdings auch einige Unterschiede, hier einige kleine Beispiele:

  • Die Filter $select zur Auswahl, welche Felder geliefert werden, ist beispielsweise nur im MS Graph verfügbar. Für große Datenoperationen, etwa das Auslesen aller User macht es oft performance-technisch einen großen Unterschied, ob alle User-Attribute oder nur bestimmte ausgelesen werden. In diesem Fall wäre MS Graph wahrscheinlich die bessere Wahl.
  • Differential Queries sind nur in AAD Graph verfügbar. Wer diese Funktionalität (welche Objekte haben sich seit der letzten Query verändert) benötigt, ist hier mit der GraphAPI besser aufgehoben, es gibt kein entsprechendes Pendant in MS Graph.
  • AAD Graph liefert alle Entities, MS Graph liefert (derzeit) ein Subset.
  • MS Graph liefert (derzeit) Users, Groups und Devices. Der Rest (Applications, ServicePrincipals, etc) ist in Beta.

Es gibt also Unterschiede in Funktion und Details. In Zukunft werden nach und nach weitere Funktionen in MS Graph folgen.

Weitere Informationen

Hier noch einige Links zu weiteren Informationsquellen zu diesem Thema:

Es gibt noch sehr viel über Identities zu erzählen. Aus meiner Sicht wird im Unternehmensumfeld das Thema AAD/Office 365 und Identitätsverwaltung - und Alles, was damit verbunden ist - immer wichtiger.

Mit dem Microsoft Graph ist der Zugriff aus eigenen Apps auf diese Services in der Cloud leicht möglich. Ich bin auch schon gespannt, ob die BUILD Conference in zwei Wochen Neuerung in diesem Bereich bringen wird.

Loading