Die Microsoft Graph API ist ein leistungsstarkes Werkzeug, um Daten und Dienste in Microsoft 365 zu nutzen. Wenn Sie mit SharePoint arbeiten, kann das Abrufen von Mitgliedern aus Berechtigungsgruppen eine häufige Aufgabe sein. In diesem Artikel führen wir Sie Schritt für Schritt durch den Prozess der Verwendung der Graph API, um diese Aufgabe effizient zu erledigen. Wir werden sowohl die theoretischen Grundlagen abdecken als auch praktische Code-Beispiele liefern.
Warum die Graph API für SharePoint Berechtigungsgruppen?
Früher nutzte man oft die SharePoint REST API oder das Client Side Object Model (CSOM) für solche Aufgaben. Die Graph API bietet jedoch einige entscheidende Vorteile:
* **Einheitlicher Zugriff:** Die Graph API ist die zentrale Schnittstelle für den Zugriff auf Daten und Dienste über verschiedene Microsoft 365-Produkte hinweg (Exchange, Teams, Azure AD usw.). Das bedeutet, Sie lernen eine API und können sie für viele verschiedene Zwecke nutzen.
* **Authentifizierung:** Die Graph API verwendet moderne Authentifizierungsmechanismen wie OAuth 2.0 und JSON Web Tokens (JWT), was sie sicherer macht.
* **Performance:** In vielen Fällen bietet die Graph API eine bessere Performance als ältere APIs.
* **Zukunftssicherheit:** Microsoft investiert stark in die Graph API, was bedeutet, dass sie ständig weiterentwickelt und verbessert wird.
Voraussetzungen
Bevor wir beginnen, stellen Sie sicher, dass Sie die folgenden Voraussetzungen erfüllen:
1. **Azure-Abonnement:** Sie benötigen ein Azure-Abonnement, um eine App-Registrierung zu erstellen.
2. **SharePoint-Umgebung:** Sie benötigen Zugriff auf eine SharePoint-Umgebung mit Berechtigungsgruppen, auf die Sie zugreifen möchten.
3. **Entwicklungsumgebung:** Wählen Sie eine Entwicklungsumgebung (z. B. Visual Studio Code, PowerShell).
4. **Erfahrung mit APIs:** Grundlegendes Verständnis von APIs und HTTP-Anfragen ist hilfreich.
5. **Microsoft Graph PowerShell SDK (Optional):** Für die Beispiele mit PowerShell ist das Microsoft Graph PowerShell SDK erforderlich. Installieren Sie es mit dem Befehl: `Install-Module Microsoft.Graph`
Schritt 1: App-Registrierung im Azure Active Directory
Um die Graph API nutzen zu können, müssen Sie eine App-Registrierung im Azure Active Directory (Azure AD) erstellen. Diese App-Registrierung dient als Identität Ihrer Anwendung und ermöglicht ihr, auf geschützte Ressourcen zuzugreifen.
1. **Melden Sie sich im Azure-Portal an:** Gehen Sie zu [https://portal.azure.com](https://portal.azure.com) und melden Sie sich mit einem Konto an, das über die Berechtigung verfügt, App-Registrierungen zu erstellen.
2. **Navigieren Sie zu Azure Active Directory:** Suchen Sie nach „Azure Active Directory” und wählen Sie es aus.
3. **Wählen Sie „App-Registrierungen”:** Klicken Sie im Menü auf der linken Seite auf „App-Registrierungen”.
4. **Neue Registrierung:** Klicken Sie auf „Neue Registrierung”.
5. **App-Namen festlegen:** Geben Sie einen aussagekräftigen Namen für Ihre App ein (z. B. „SharePointBerechtigungsgruppen”).
6. **Kontotyp auswählen:** Wählen Sie den Kontotyp aus, der für Ihre Anwendung am besten geeignet ist. Für die meisten Anwendungsfälle ist „Konten in diesem Organisationsverzeichnis” (Single Tenant) ausreichend. Wenn die Anwendung auch von anderen Organisationen genutzt werden soll, wählen Sie „Konten in einem beliebigen Organisationsverzeichnis” (Multi Tenant).
7. **Umleitungs-URI (Optional):** Dieser ist für unseren Anwendungsfall nicht unbedingt erforderlich, kann aber für interaktive Anmeldungen wichtig sein. Sie können später einen hinzufügen.
8. **Registrieren:** Klicken Sie auf „Registrieren”.
Nachdem die App-Registrierung erstellt wurde, notieren Sie sich die folgenden Informationen, da diese für die Authentifizierung erforderlich sind:
* **Anwendungs-ID (Client-ID):** Diese eindeutige ID identifiziert Ihre Anwendung.
* **Verzeichnis-ID (Mandanten-ID):** Diese eindeutige ID identifiziert Ihr Azure AD-Mandant.
Schritt 2: API-Berechtigungen konfigurieren
Ihre App benötigt die entsprechenden API-Berechtigungen, um auf SharePoint-Daten zugreifen zu können. Für das Abrufen von Berechtigungsgruppen-Mitgliedern benötigen Sie in der Regel die folgenden Berechtigungen:
* **Sites.Read.All:** Ermöglicht das Lesen von SharePoint-Websites und -Listen, inklusive Berechtigungen.
* **GroupMember.Read.All (Optional):** Wenn die Berechtigungsgruppe Azure AD-Gruppen als Mitglieder enthält, ist diese Berechtigung erforderlich.
* **User.Read.All (Optional):** Wenn Sie auch Benutzerinformationen (z.B. Anzeigenamen, E-Mail-Adressen) abrufen möchten, benötigen Sie diese Berechtigung.
Gehen Sie wie folgt vor, um die API-Berechtigungen zu konfigurieren:
1. **Navigieren Sie zur App-Registrierung:** Gehen Sie zurück zur App-Registrierung, die Sie im vorherigen Schritt erstellt haben.
2. **API-Berechtigungen:** Klicken Sie im Menü auf der linken Seite auf „API-Berechtigungen”.
3. **Berechtigung hinzufügen:** Klicken Sie auf „Berechtigung hinzufügen”.
4. **Microsoft Graph:** Wählen Sie „Microsoft Graph” aus.
5. **Delegierte Berechtigungen oder Anwendungsberechtigungen:** Wählen Sie entweder „Delegierte Berechtigungen” (im Namen eines Benutzers) oder „Anwendungsberechtigungen” (im Namen der Anwendung) aus. Für viele Automatisierungsaufgaben werden Anwendungsberechtigungen bevorzugt, da sie keine Benutzerinteraktion erfordern. Beachten Sie, dass Anwendungsberechtigungen in der Regel eine Administratorzustimmung erfordern.
6. **Wählen Sie die erforderlichen Berechtigungen aus:** Suchen Sie nach den oben genannten Berechtigungen (Sites.Read.All, GroupMember.Read.All, User.Read.All) und aktivieren Sie die entsprechenden Kontrollkästchen.
7. **Berechtigungen hinzufügen:** Klicken Sie auf „Berechtigungen hinzufügen”.
8. **Administratorzustimmung erteilen (falls erforderlich):** Wenn Sie Anwendungsberechtigungen verwendet haben, muss ein Administrator die Berechtigungen genehmigen. Klicken Sie auf „Administratorzustimmung für [Ihr Mandant] erteilen” und bestätigen Sie die Aktion.
Schritt 3: Client Secret erstellen (für Anwendungsberechtigungen)
Wenn Sie Anwendungsberechtigungen verwenden, benötigen Sie ein Client Secret, um Ihre Anwendung zu authentifizieren. Ein Client Secret ist wie ein Passwort für Ihre Anwendung.
1. **Navigieren Sie zur App-Registrierung:** Gehen Sie zurück zur App-Registrierung, die Sie im vorherigen Schritt erstellt haben.
2. **Zertifikate & Geheimnisse:** Klicken Sie im Menü auf der linken Seite auf „Zertifikate & Geheimnisse”.
3. **Neues Client Secret:** Klicken Sie auf „Neues Client Secret”.
4. **Beschreibung hinzufügen:** Geben Sie eine Beschreibung für das Client Secret ein (z. B. „SharePoint Graph API”).
5. **Ablaufzeitraum auswählen:** Wählen Sie einen Ablaufzeitraum für das Client Secret aus.
6. **Hinzufügen:** Klicken Sie auf „Hinzufügen”.
**Wichtig:** Kopieren Sie das Client Secret sofort nach dem Erstellen. Sie können es später nicht mehr abrufen!
Schritt 4: Abrufen der SharePoint Berechtigungsgruppen-Mitglieder mit der Graph API
Jetzt, wo Sie Ihre App-Registrierung und API-Berechtigungen konfiguriert haben, können Sie mit dem Abrufen der SharePoint Berechtigungsgruppen-Mitglieder beginnen. Hier sind Beispiele in PowerShell und C#:
**PowerShell Beispiel (mit Microsoft Graph PowerShell SDK):**
„`powershell
#Benötigte Parameter
$TenantId = „IHRE_MANDANTEN_ID”
$ClientId = „IHRE_CLIENT_ID”
$ClientSecret = „IHR_CLIENT_SECRET”
$SiteId = „IHRE_SITE_ID” # Ersetzen Sie dies durch die ID der SharePoint-Website
$GroupId = „IHRE_GRUPPEN_ID” # Ersetzen Sie dies durch die ID der SharePoint-Berechtigungsgruppe
#Authentifizierung
Connect-MgGraph -TenantId $TenantId -ClientId $ClientId -ClientSecret $ClientSecret -Scopes „Sites.Read.All”
# Abrufen der Mitglieder der SharePoint Berechtigungsgruppe
$Members = Get-MgGraphSiteGroupMember -SiteId $SiteId -GroupId $GroupId
# Ausgabe der Mitglieder
foreach ($Member in $Members) {
Write-Host „DisplayName: $($Member.DisplayName)”
Write-Host „UserPrincipalName: $($Member.UserPrincipalName)”
Write-Host „Id: $($Member.Id)”
Write-Host „———————”
}
„`
**Erläuterung des PowerShell-Skripts:**
1. **Parameter:** Definieren Sie die erforderlichen Parameter (Mandanten-ID, Client-ID, Client-Secret, Site-ID, Gruppen-ID).
2. **Authentifizierung:** Verwenden Sie `Connect-MgGraph`, um sich mit der Graph API zu authentifizieren. Stellen Sie sicher, dass Sie die erforderlichen Berechtigungen (`Sites.Read.All`) angeben.
3. **Abrufen der Mitglieder:** Verwenden Sie `Get-MgGraphSiteGroupMember`, um die Mitglieder der angegebenen SharePoint Berechtigungsgruppe abzurufen. Ersetzen Sie `$SiteId` und `$GroupId` durch die tatsächlichen Werte.
4. **Ausgabe der Mitglieder:** Iterieren Sie durch die zurückgegebenen Mitglieder und geben Sie deren DisplayName, UserPrincipalName und ID aus.
**C# Beispiel (mit Microsoft.Graph SDK):**
„`csharp
using Microsoft.Graph;
using Microsoft.Identity.Client;
using System;
using System.Collections.Generic;
using System.Threading.Tasks;
public class SharePointGroupMembers
{
private static string _tenantId = „IHRE_MANDANTEN_ID”;
private static string _clientId = „IHRE_CLIENT_ID”;
private static string _clientSecret = „IHR_CLIENT_SECRET”;
private static string _siteId = „IHRE_SITE_ID”; // Ersetzen Sie dies durch die ID der SharePoint-Website
private static string _groupId = „IHRE_GRUPPEN_ID”; // Ersetzen Sie dies durch die ID der SharePoint-Berechtigungsgruppe
public static async Task Main(string[] args)
{
// Authentifizierung
IConfidentialClientApplication app = ConfidentialClientApplicationBuilder.Create(_clientId)
.WithClientSecret(_clientSecret)
.WithAuthority(new Uri($”https://login.microsoftonline.com/{_tenantId}”))
.Build();
string[] scopes = new string[] { „Sites.Read.All” };
AuthenticationResult result = await app.AcquireTokenForClient(scopes).ExecuteAsync();
GraphServiceClient graphClient = new GraphServiceClient(
new DelegateAuthenticationProvider(async (requestMessage) =>
{
requestMessage.Headers.Authorization = new System.Net.Http.Headers.AuthenticationHeaderValue(„bearer”, result.AccessToken);
}));
// Abrufen der Mitglieder der SharePoint Berechtigungsgruppe
var members = await graphClient.Sites[_siteId].Groups[_groupId].Members
.Request()
.GetAsync();
// Ausgabe der Mitglieder
foreach (var member in members)
{
Console.WriteLine($”DisplayName: {member.AdditionalData[„displayName”]}”);
Console.WriteLine($”Id: {member.Id}”);
Console.WriteLine(„———————„);
}
}
}
„`
**Erläuterung des C#-Skripts:**
1. **Abhängigkeiten:** Stellen Sie sicher, dass Sie die erforderlichen NuGet-Pakete installiert haben: `Microsoft.Graph` und `Microsoft.Identity.Client`.
2. **Parameter:** Definieren Sie die erforderlichen Parameter (Mandanten-ID, Client-ID, Client-Secret, Site-ID, Gruppen-ID).
3. **Authentifizierung:** Verwenden Sie `ConfidentialClientApplicationBuilder` und `AcquireTokenForClient`, um sich mit der Graph API zu authentifizieren. Beachten Sie, dass dieses Beispiel Anwendungsberechtigungen verwendet.
4. **GraphServiceClient erstellen:** Erstellen Sie ein `GraphServiceClient`-Objekt, das für die Interaktion mit der Graph API verwendet wird.
5. **Abrufen der Mitglieder:** Verwenden Sie die `graphClient` Instanz, um die Mitglieder der angegebenen SharePoint Berechtigungsgruppe abzurufen. Ersetzen Sie `_siteId` und `_groupId` durch die tatsächlichen Werte.
6. **Ausgabe der Mitglieder:** Iterieren Sie durch die zurückgegebenen Mitglieder und geben Sie deren DisplayName und ID aus.
## Schritt 5: Fehlerbehandlung und Optimierung
Beim Arbeiten mit der Graph API ist es wichtig, Fehler zu behandeln und die Abfragen zu optimieren.
* **Fehlerbehandlung:** Implementieren Sie eine ordnungsgemäße Fehlerbehandlung, um sicherzustellen, dass Ihre Anwendung robust ist. Überprüfen Sie die HTTP-Statuscodes und behandeln Sie Ausnahmen.
* **Paging:** Wenn Sie mit großen Berechtigungsgruppen arbeiten, kann es notwendig sein, die Ergebnisse zu paginieren. Die Graph API unterstützt Paging, sodass Sie die Ergebnisse in kleineren Blöcken abrufen können. Nutzen Sie die `@odata.nextLink` Eigenschaft, um die nächste Seite der Ergebnisse abzurufen.
* **Batching:** Wenn Sie mehrere Anfragen an die Graph API stellen müssen, können Sie Batching verwenden, um mehrere Anfragen in einer einzigen HTTP-Anfrage zusammenzufassen. Dies kann die Performance verbessern.
* **Caching:** Cachen Sie die Ergebnisse, wenn möglich, um unnötige Anfragen an die Graph API zu vermeiden.
Fazit
In diesem Artikel haben wir Ihnen gezeigt, wie Sie mit der Microsoft Graph API die Mitglieder von SharePoint Berechtigungsgruppen abrufen können. Wir haben die erforderlichen Schritte zur App-Registrierung, API-Berechtigungskonfiguration, Authentifizierung und Code-Beispiele in PowerShell und C# behandelt. Durch die Beachtung der Best Practices für Fehlerbehandlung und Optimierung können Sie eine robuste und effiziente Lösung erstellen. Die Graph API ist ein vielseitiges Werkzeug, das Ihnen hilft, Ihre SharePoint– und Microsoft 365-Anwendungen zu automatisieren und zu verbessern.