Sites.Selected Berechtigung in SharePoint und Microsoft Graph API

Fügt man einer Azure App Berechtigungen hinzu ist in den APIs von Microsoft Graph und SharePoint unter Application Permissions jeweils eine Berechtigungen Sites.Selected aufgeführt.

Sites.Selected Berechtigung
Sites.Selected Berechtigung

Nebenbei ist vermerkt eine betroffene Site benötigt zusätzliche Konfigurationen. Der Vermerk bedeutet der App muss mitgeteilt werden auf welche SharePoint Seite es Zugriff hat.

In meinem Beispiel möchte ich einer App nur den Zugriff auf die SharePoint Seite Finance Switzerland ermöglichen. In Summe sind es zwei Schritte + ein Test der Konfiguration.

  1. Erstellung einer neuen Azure AD App Registration mit der Berechtigung Sites.Selected. Bei Bedarf könnte die Berechtigung für eine bestehende App ergänzt werden. Übersichtshalber ist eine Trennung sinnvoller.
  2. Berechtigen der App auf ausgewählte SharePoint Site Collections.
  3. Zugriff über Code testen.

Schritt 1 ist schnell erledigt. Ich erstelle mir eine neue App Registration, füge der App ein Zertifikat für die Authentifizierung hinzu und vergebe die Berechtigung Application > Sites.Selected.
Zu beachten ist welche API gewählt wird, davon abhängig wie jemand später auf die SharePoint Seite zugreifen möchte:

  • Für Zugriff über PnP.PowerShell ist die SharePoint API erforderlich.
  • Für Zugriff über Graph ist die Microsoft Graph API erforderlich.

Für meine Simulation fügte ich beide Berechtigungen hinzu. Falls du Hilfe mit der App benötigst, eine Anleitung von mir bzw. eine Anleitung von Microsoft.

Sites.Selected Berechtigung über SharePoint oder Microsoft Graph API
Sites.Selected Berechtigung über SharePoint oder Microsoft Graph API

Ohne weiterer Konfiguration hat die App hat im Moment Zugriff auf nichts. Praktisch gesehen benötigt es die App in dem Zustand nicht. Der App fehlt eine weitere Berechtigung.


Schritt 2 sollte von einem Benutzerkonto mit der Rolle SharePoint Admin erfolgen, könnte aber auch ein Besitzer der betroffenen Site Collections sein. Für die Konfiguration ist PowerShell und das PnP.Powershell Modul in einer aktuellen Version erforderlich.

  1. Installiere oder aktualisiere das PnP.Powershell Modul.
  2. Verbinde dich mit einem aktuell berechtigten Konto (Besitzer oder SharePoint Admin) zu der SharePoint Seite.
PowerShell
Import-Module PnP.PowerShell
Connect-PnPOnline -Url <SharePointSiteURL> -Interactive

  1. Jetzt musst du die in Schritt 1 erstellte App über Grant-PnPAzureADAppSitePermission auf die SharePoint Seite berechtigen. Initial stehen die Berechtigungen Write und Read zur Verfügung.
PowerShell
Grant-PnPAzureADAppSitePermission -AppId <AzureAppID> -DisplayName <AzureAppName> -Site <SharePointSiteURL> -Permissions <Write|Read>


PowerShell bestätigt die Eingabe mit einer Berechtigungs-ID. Über die ID kann die Berechtigung später widerrufen werden.

PowerShell
  1. Optional: Mit Set-PnPAzureADAppSitePermission ist eine Erhöhung der Berechtigung auf Manage oder FullControl möglich.
PowerShell
Set-PnPAzureADAppSitePermission -PermissionId <PermissionID> -Permissions <Read|Write|Manage|FullControl>


Mit Get-PnPAzureADAppSitePermission fragst du alle bestehenden App Berechtigungen pro Seite ab.


Mit Schritt 3 erfolgt der Zugriffstest über PnP.PowerShell und Microsoft Graph.
Verbinde dich mit Connect-PnPOnline + der AppID aus Schritt 1 + dem Zertifikat zu der SharePoint Seite.

PowerShell
Connect-PnPOnline -Url <SharePointSiteURL> -ClientId <AzureAppID> -Thumbprint <CertThumbprint> -Tenant "<Tenant>.onmicrosoft.com"


Mit einem einfachen Command wie Get-PnPList erfolgt die Überprüfung. Gibt es Daten zurück ist der Zugriff erfolgreich, andernfalls schreibt es ein 401 Unauthorized (siehe unten).

Zugriff über SharePoint API
Zugriff über SharePoint API

Als Vergleich verbinde ich mich mit der App auf eine beliebig andere SharePoint Seite. Die Abfrage von Get-PnPList wird verweigert.

PowerShell


Neben PnP.PowerShell ist der Zugriff auch über Microsoft Graph APIs möglich.

Zugriff über Microsoft Graph API
Zugriff über Microsoft Graph API

Die Berechtigung von Sites.Selected ist dadurch über PnP.PowerShell und Microsoft Graph korrekt umgesetzt.
Soll die Berechtigung für eine App nachträglich wieder entfernt werden ist es über Revoke-PnPAzureADAppSitePermission möglich.

PowerShell
Revoke-PnPAzureADAppSitePermission -PermissionId <PermissionID>

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.

Schreibe einen Kommentar

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