Microsoft Graph, Sites.FullControl.All und (403) Forbidden

Möchte jemand über Microsoft Graph Daten von Microsoft Diensten abrufen ist eine Azure App notwendig. Für den Zugriff auf SharePoint kann die Azure App in manchen Fällen nicht ausreichend sein. Dafür gibt es SharePoint Apps.

In einer Azure App wird die Microsoft Graph Berechtigung Application / Sites.FullControl.All vergeben.

Mit dem Recht könnte davon ausgegangen werden die Azure App hat FullControl für alle SharePoint Sites. Manchmal klappt es nicht wie erwartet. Am Beispiel für Änderungen an Site Collection Administratoren, wenn jemand über die APIs Berechtigungen an der Site anpassen möchte.

Via PnP PowerShell kann über die Azure App + ClientSecret eine Verbindung zu einer beliebigen SharePoint Site des Tenants hergestellt werden.

Connect-PnPOnline -Url [SharePointSiteUrl] -ClientId [ApplicationID] -ClientSecret [AppClientSecret]

Mit Add-PnPSiteCollectionAdmin möchte man einen neuen Site Collection Admin hinzufügen.

Add-PnPSiteCollectionAdmin -Owners [UserPrincipalName]

Über die Azure App wird es nicht möglich sein. Es wird mit Forbidden abgelehnt.

Sites.FullControl.All bedeutet damit bei Microsoft Graph im Moment nicht die erwartete volle Berechtigung.

Die Lösung in dem Fall sind SharePoint App-only. Für SharePoint gibt es ältere SharePoint Apps die es bereits in SharePoint On-premise gab und weiterhin in SharePoint Online gibt. Da Microsoft die Erstellung solch einer App Schritt für Schritt beschreibt solltest du die Anleitung lesen um die App bei Bedarf anzulegen. Für die Erstellung muss dem Account die Rolle SharePoint Online Admin zugewiesen sein. Beachte, da die App in der Konfiguration volle Rechte auf alles im SharePoint Online Tenant hat sollte es nur einem begrenzten Personenkreis zur Verfügung stehen.
Nachdem die App erstellt wurde gibt es ähnlich zur Azure App eine ClientID und ClientSecret. Mit dieser verbinde ich mich erneut zu einer beliebigen SharePoint Site und füge einen neuen Site Collection Admin hinzu. Mit den Rechten und Daten der SharePoint App wird es funktionieren.

Connect-PnPOnline -Url [SharePointSiteUrl] -ClientId [AppClientID] -ClientSecret [AppClientSecret]
Add-PnPSiteCollectionAdmin -Owners [UserPrincipalName]

Was in der Anleitung von Microsoft nicht erwähnt wird, der ClientSecret Key einer neuen SharePoint App hat standardmässig eine Gültigkeit von 12 Monaten. Danach läuft der Key ab und der Zugriff wird verweigert. Die App und Gültigkeit des Keys kann via PowerShell kontrolliert werden.

Connect-MsolService
Get-MsolServicePrincipalCredential -AppPrincipalId [ClientID] -ReturnKeyValues $true

Da die SharePoint App in Azure gefunden wird lässt sich der Key, wie bei jeder Azure App, ersetzen und die Laufzeit selbst definieren. Beachte, nachdem der neue Key erstellt wurde kann es 24 Stunden dauern bis es zu SharePoint synchronisiert ist.

Eine Kontrolle zeigt die Laufzeit ist neu 5 Jahre. So lässt es sich individuell anpassen.

Share
Avatar-Foto

Tobias Asböck

Tobias ist ein Senior System Engineer mit rund 10 Jahren Berufserfahrung für Microsoft 365 Produkte wie SharePoint Online, OneDrive for Business, Teams Collaboration, Entra ID, Information Protection, Universal Print und Microsoft 365 Lizenzierung. Aus der Vergangenheit kennt er über einen Zeitraum von 15+ Jahren die Planung, Administration und den Betrieb von SharePoint Server Umgebungen. Tobias ist ein PowerShell Scripter mit Zertifizierungen für Microsoft 365 Produkte. In seiner Freizeit beschäftigt sich Tobias mit Aktualisierungen in der M365-Welt, ist mit seinem Rennvelo unterwegs und anderen sportlichen Aktivitäten beschäftigt. Bei Fragen kontaktiere mich über LinkedIn oder [email protected].

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert