Zum Hauptinhalt springen
< Alle Themen
Drucken

Entra ID App Registration für Microsoft Graph automatisiert anlegen

Viele Community-Skripte und Eigenentwicklungen für Exchange Online und Microsoft 365 setzen mittlerweile auf Microsoft Graph statt auf EWS oder Remote PowerShell. Voraussetzung dafür ist immer eine App-Registrierung in Entra ID mit den passenden API-Berechtigungen. Das manuelle Anlegen im Entra-Portal ist fehleranfällig, insbesondere wenn mehrere Delegated- und Application-Permissions korrekt zugewiesen sind und ggf. noch Admin Consent erteilt werden muss.

Das PowerShell-Skript Add-EntraIdAppRegistration.ps1 automatisiert diesen Vorgang. Es legt eine neue App Registration an, weist einen Owner zu, konfiguriert die benötigten Graph-Berechtigungen aus einer JSON-Datei und erstellt optional ein Client Secret oder bereitet die App für zertifikatsbasierte Authentifizierung vor.

Für die Ausführung wird PowerShell 7.1 oder höher benötigt sowie die Module Microsoft.Graph.Authentication und Microsoft.Graph.Applications. Das ausführende Konto muss mindestens Mitglied der Rolle Application Administrator oder Global Administrator sein. Soll der Admin Consent direkt per Code erteilt werden, ist zusätzlich die Rolle Privileged Role Administrator oder Global Administrator erforderlich.

Das Skript liest zunächst die benötigten API-Berechtigungen aus einer JSON-Konfigurationsdatei (standardmäßig AppPermissions.json im Skriptverzeichnis) und bricht bei fehlender oder ungültiger Datei kontrolliert ab, bevor am Tenant etwas geändert wird. Anschließend werden folgende Schritte ausgeführt:

  • Verbindung zu Microsoft Graph mit den notwendigen Scopes, optional gegen einen bestimmten TenantId
  • Prüfung, ob bereits eine App Registration mit demselben Anzeigenamen existiert, um Duplikate zu vermeiden
  • Anlage der neuen App Registration inklusive Name und Beschreibung
  • Zuweisung eines Owners über die angegebene E-Mail-Adresse
  • Optionaler Upload eines App-Logos, inklusive Validierung von Dateityp und maximaler Größe von 256 KB
  • Erstellung eines Client Secrets mit konfigurierbarer Gültigkeit, oder alternativ Hinweis auf die manuelle Zertifikatshinterlegung bei Verwendung von UseCertificate
  • Zuweisung der aus der JSON-Datei geladenen RequiredResourceAccess-Berechtigungen
  • Konfiguration der App als Public Client mit Redirect URI für den nativen OAuth2-Flow
  • Optionale Erteilung des Admin Consent per Code über GrantAdminConsent, inklusive Anlage des Service Principal, App Role Assignments und Oauth2PermissionGrants
  • Optionales Öffnen des Entra Portals im Browser, auf Wunsch auch in einem privaten Fenster, um den Consent manuell zu erteilen
PowerShell
				# Standardausführung: App mit Client Secret anlegen, Consent manuell im Portal erteilen
.\Add-EntraIdAppRegistration.ps1 -AppName 'Graph Reporting App' -AppOwnerEmailAddress 'admin@contoso.onmicrosoft.com'

# App für zertifikatsbasierte Authentifizierung vorbereiten, kein Client Secret
.\Add-EntraIdAppRegistration.ps1 -AppName 'Graph Reporting App' -AppOwnerEmailAddress 'admin@contoso.onmicrosoft.com' -UseCertificate

# Admin Consent direkt per Code erteilen, gezielt gegen einen Tenant
.\Add-EntraIdAppRegistration.ps1 -TenantId '00000000-0000-0000-0000-000000000000' -AppName 'Graph Reporting App' -AppOwnerEmailAddress 'admin@contoso.onmicrosoft.com' -GrantAdminConsent

# Eigene Berechtigungsdatei verwenden und nach Anlage direkt den Consent-Dialog im Browser öffnen
.\Add-EntraIdAppRegistration.ps1 -AppName 'Graph Reporting App' -AppOwnerEmailAddress 'admin@contoso.onmicrosoft.com' -PermissionsConfigPath C:\Config\AppPermissions.json -OpenBrowser
			

Alle Details zu den Parametern, zum Aufbau der AppPermissions.json und zu bekannten Einschränkungen sind in der README-Datei im GitHub-Repository dokumentiert.

Inhalt