
Power Automate ist ein mächtiges Werkzeug zur Automatisierung von diversen Prozessen. Eines der großen Vorteile von Power Automate – im Vergleich zu anderen Automatisierungstools – ist die unkomplizierte Anbindung in die Office365 Welt. Dafür sind standardmäßig Konnektoren und Aktionen zu den verschiedenen Anwendungen implementiert.
Diese Aktionen bieten viele Möglichkeiten, haben aber zwei entscheidende Begrenzungen. Einerseits sind nur die entsprechend klar definierten Aktionen möglich, d.h. eine gewünschte Funktionalität ist eventuell nicht unterstützt. Andererseits werden diese Aktionen immer im Kontext eines angemeldeten Nutzers ausgeführt. Sobald diese Aktionen für andere User ausgeführt werden sollen, liegt eine Berechtigungsproblematik vor. Eine mögliche Lösung ist der Zugriff auf Office365 Funktionalitäten mithilfe von Microsoft Graph und die Autorisierung über Anwendungs-Berechtigungen, statt delegierter Berechtigungen.
In diesem Artikel soll ein Weg skizziert werden, mit dem innerhalb von Power Automate die Microsoft Graph Schnittstelle genutzt wird. Diese Kommunikation wird über eine App Registrierung im Azure Portal und Anwendungs-Berechtigungen autorisiert und ist damit unabhängig von einem einzelnen Benutzer und seinen/ihren Berechtigungen.
Um dieser Anleitung zu folgen, benötigen Sie entsprechende Berechtigungen im Azure Portal und es wird eine Power Automate Premium Lizenz benötigt.
Die Registrierung mit Konfiguration der Berechtigungen im Azure Portal bildet die Grundlage, dass von Power Automate Applikations-Berechtigungen genutzt werden können. Damit ist man unabhängig von einem angemeldeten Nutzer.
Im Azure Portal – unter portal.azure.com zu erreichen – finden sich unter anderem die App Registrierungen. Hier muss eine neue Registrierung angelegt werden. Unter ‘Verwalten’ und ‘Zertifikate & Geheimnisse’ muss ein neuer geheimer Clientschlüssel generiert werden. Der Wert des Clientschlüssels muss sich gemerkt, bzw. gespeichert werden, da man darauf später keinen Zugriff mehr hat.
Auf der Übersichtsseite der App Registrierung müssen sich zusätzlich zum Clientschlüssel die Anwendungs-Id (Client-Id) und die Verzeichnis-Id (Mandant/Tenant-Id) gemerkt/gespeichert werden.
Unter dem Reiter API-Berechtigungen müssen im weiteren Verlauf Microsoft Graph API Berechtigungen hinzugefügt werden. Welche das sind kann im speziellen Fall in der Microsoft Graph API Dokumentation nachgelesen werden.

Aktionen in einem Power Automate Flow werden immer im Kontext einer Verbindung ausgeführt. Office 365 Aktionen nutzen dafür eine hinterlegte Verbindung mit Berechtigungen des authentifizierten Users. Um unabhängig von diesen Aktionen und User-Berechtigungen auf Office 365 Funktionalitäten zuzugreifen nutzen wir die Microsoft Graph Schnittstelle mit Anwendungs-Berechtigungen. Da Microsoft Graph über Http-Requests funktioniert, können wir in Power Automate mit den integrierten Http Aktionen arbeiten. Diese Aktionen sind leider Premium Aktionen, daher wird die Power Automate Premium Lizenz benötigt.
Um sich als Anwendung zu authentifizieren, muss über ein Http Post ein Access Token abgerufen werden. Dafür wird eine Http Aktion dem Flow hinzugefügt und wie folgt konfiguriert:

Die URI/URL ist der Microsoft Online Login für einen Access Token mit Angabe der Verzeichnis-/Tenant-Id:
https://login.microsoftonline.com/{Verzeichnis-Id}/oauth2/v2.0/token
Die Methode ist ‘POST’ und als Header muss folgendes Key-Value Paar eingetragen werden:
Content-Type
application/x-www-form-urlencoded
Im Body werden Parameter, wie der Client Schlüssel und die Client-Id übergeben:
grant_type=client_credentials&client_secret={Client-Schlüssel}&client_id={Client-Id}&scope=https://graph.microsoft.com/.default
Das Ergebnis des POST Requests ist ein JSON Objekt, das analysiert werden muss, um den Token auszulesen. Konkret bedeutet das, dass die integrierte Aktion ‘JSON analysieren’ genutzt wird. Der Body aus dem vorherigen Schritt wird als Content ausgewählt und das Schema wird wie folgt gesetzt:
1{
2 "type": "object",
3 "properties": {
4 "token_type": {
5 "type": "string"
6 },
7 "expires_in": {
8 "type": "integer"
9 },
10 "ext_expires_in": {
11 "type": "integer"
12 },
13 "access_token": {
14 "type": "string"
15 }
16 }
17}
Jetzt kann der Flow ausgeführt werden und es wird ein User-unabhängiger Access Token abgerufen.
Mithilfe des Access Token können andere Funktionen über die Microsoft Graph Schnittstelle aufgerufen werden. Das folgende Beispiel zeigt, wie ein Kalender Eintrag im Outlook Kalender einer Person erstellt werden kann.
Es wird wieder die Http Aktion genutzt. Des weiteren werden für jede Microsoft Graph Aktion 3 Informationen benötigt. (1) Die URI für die auszuführende Aktion. (2) der Access Token und (3) die Informationen zur Aktion, bzw. den Body der Anfrage.
Mögliche Aktionen und die konkrete Information zu den möglichen Aktionen über Microsoft Graph kann man in der Dokumentation finden. Dafür empfehle ich folgende Seiten:
https://learn.microsoft.com/en-us/graph/use-the-api
- allgemeine Informationen zum Arbeiten mit der Microsoft Graph API
https://developer.microsoft.com/en-us/graph/graph-explorer
- ein Tool zum Ausprobieren (nur für delegierte Berechtigungen, der eigene Nutzer)
https://learn.microsoft.com/de-de/graph/api/user-post-events?view=graph-rest-1.0&tabs=http
- Dokumentation der gesamten API mit Beispielen. Hier der Endpunkt zum Erstellen eines Ereignisses im Kalender
Der folgende Screenshot stammt aus dem untersten Link. Hier ist beschrieben welche Berechtigungen erforderlich sind, um diese Aktion durchzuführen. Der markierte Bereich gibt an, dass es das Calendars.ReadWrite Recht gibt, um eine Anwendungsberechtigung zu erteilen. Das ist also das Recht, dass wir im Azure Portal unter den API-Berechtigungen konfigurieren müssen.

Die URI ergibt sich nach Dokumentation wie folgt. Wobei die ID den Nutzer darstellt, für den ein Kalendereintrag erstellt werden soll.

Der Body wird mit einem JSON-Objekt befüllt. Die Struktur ergibt sich auch aus der Dokumentation. Für einen neuen Kalender Eintrag sieht die gesamte Aktion dann beispielsweise so aus:

Mit diesen Informationen sollte es möglich sein die Berechtigungen in Azure zu konfigurieren und die Aktionen in Power Automate zu erstellen, die einen Zugriff zu Microsoft Graph über Anwendungsberechtigungen ermöglichen. Die Dokumentation beschreibt alle möglichen Funktionalitäten von Microsoft Graph und die in der Azure Appregistrierung benötigten Rechte.
Mit diesem Wissen können in Power Automate Flows erstellt werden, die nicht nur für einen selbst, sondern auch für andere Mitarbeiter aktiv sind. Beispielsweise können Ereignisse im Kalender oder Abwesenheitsnotizen in Outlook erstellt werden. Diese Funktionen können zum Beispiel für ein Abwesenheits-/ oder Urlaubssystem innerhalb des Unternehmens genutzt werden.
Es sind grundsätzliche Security Themen zu berücksichtigen. Wenn die Berechtigungen vergeben wurden, könnte die Person, die das Client Secret besitzt, ihr Unwesen treiben. Dieses System sollte dementsprechend nicht von beliebigen Mitarbeitern angewandt werden, sondern speziell von der IT-Abteilung.

Unser Geschäftsführer Tibor Csizmadia und unser Kundenbetreuer Jens Walter stehen Ihnen persönlich zur Verfügung. Profitieren Sie von unserer langjährigen Erfahrung und erhalten Sie eine kompetente Erstberatung in einem unverbindlichen Austausch.