In meinem ersten Blogartikel darf ich Microsoft Graph, die vernetzte Office 365 Schnittstelle, vorstellen. Dabei handelt es sich um eine API, welche alle bisherigen APIs von Office-Produkten wie Excel, Outlook oder Word, sowie Microsoft Services wie etwa OneDrive oder Azure AD, über eine REST Schnittstelle zugänglich macht.

Als ein Kernstück präsentiert sich dabei auch Azure AD, welches die Rechteverwaltung und Authentifizierung von Usern beinhaltet. Diese beinhaltet auch die Zugriffsrechte auf Graphressourcen, wie Outlook E-Mails oder Excel Arbeitsmappen, die auf OneDrive gespeichert sind. Welche Berechtigungen es gibt bzw. welche Rechte für spezifische Operationen benötigt werden, kann hier nachgeschlagen werden.

Um die Berechtigungen zuordnen zu können, müssen alle Applikationen in Azure AD registriert sein. Sobald diese Registrierung vorgenommen wurde, können hier bereits die Rechte, welche die Applikation benötigt, in Azure AD angefordert werden. Beim Einloggen des Nutzers verlangt Azure AD eine Bestätigung der Rechte durch den Nutzer. Dies geschieht beim erstmaligen Einloggen, sowie nach einer Änderungen der benötigten Rechte. Nach dieser Bestätigung sind die freigegebenen Daten des Nutzers über die API verfügbar.

Azure AD Appregistration

Zum Testen der Zugriffe und auch der Berechtigungen stellt Microsoft den Graph Explorer zur Verfügung. Die Funktionsweise ähnelt dabei sehr Applikationen wie Postman. Der Explorer stellt Beispiele zur Verwendung von Funktionen, wie etwa das Zugreifen auf einen Kalendereintrag von Outlook zur Verfügung und liefert auch Beispieldaten zurück. Falls man sich hier mit dem eigenen Account einloggt, liefert der Graph Explorer auch Echtdaten zurück. Die Berechtigungen, die man in MsGraph Explorer erteilt, sind allerdings nur lokal und stehen nicht in Zusammenhang mit einer in Azure AD registrierten Anwendung.

Designsprint

Für die tatsächliche Entwicklung von Anwendungen stellt Microsoft SDKs in einer Vielzahl an Programmiersprachen zur Verfügung. Diese agieren als Wrapper der API und beinhalten ansonsten alle Funktionen, die auch mittels Http Calls verfügbar sind.

Hier ein kurzes Beipiel:

private async Task ProcessGraphCalendars()
{
    var calendarsPage = await this.graphClient.Me.Calendars.Request().GetAsync();
    this.HandleCalendarPage(calendarsPage);
    while (calendarsPage.NextPageRequest != null)
    {
        calendarsPage = await calendarsPage.NextPageRequest.GetAsync();
        this.HandleCalendarPage(calendarsPage);
    }
}

Graph Ergebnisse sind prinzipiell immer pageable und können auch mit OData durchsucht und eingeschränkt werden. Weiters kann mit Graph auch auf Daten von OnPremises Exchange Systeme zugegriffen werden. Dies bedarf aber eines hybrit Setups mit Exchange 2016 CU 3+ Servern.

Die genauen Anforderungen und den Installationsguide finden Sie hier.