Teams Webinare über Microsoft Graph auswerten

Microsoft Graph hat mit virtualEventWebinar eine neue Möglichkeit für die Auswertung von Webinare. Zum aktuellen Zeitpunkt inkludiert die API nur Lesemöglichkeiten. Die Möglichkeit kann ausreichend sein um Informationen über ein Webinar an externe Systeme zu übertragen.

Für virtualEventWebinar sind folgende Berechtigungen beachtenswert:

  • Für die Auflistung von Webinare benötigt es eine App Registration. Die Auflistung aller Webinare unterstützt nur Application Permission.
  • Mit Delegated Permission könnten Organisatoren ihre eigenen Webinare abfragen, sofern die ID des Webinars bekannt ist (siehe Beispiel im Verlauf).
  • Für Application Permission ist in Teams zusätzlich eine Application Access Policy erforderlich. Mit der Policy wird eine App berechtigt für ausgewählte Konten Webinare auszuwerten.

Die Anforderungen und Vorgänge aus Microsoft Graph können zusammengefasst werden:

  1. App Registration wird in Teams mit neuer Application Access Policy verknüpft.
  2. Application Access Policy wird an ausgewählte Benutzerkonten zugewiesen.
  3. Über die Application Access Policy wird Graph berechtigt für die Benutzerkonten Webinare abzufragen. Für Microsoft Graph zählt welches Konto der Organisator ist.

1) App Registration für Webinare

In Entra ID erstelle ich mir eine neue App Registration mit den Berechtigungen VirtualEvent.Read.All und lade mein Zertifikat zur Authentifizierung hoch. Für Webinare gibt es im Moment nur diese Berechtigung.

Berechtigungen für die App Registration
Berechtigungen für die App Registration

2) Application Access Policy in Teams konfigurieren

In den Graph Dokumentationen ist an div. Stellen eine Notiz über Application Access Policy vermerkt.

This API returns only webinars whose organizer has been assigned an application access policy.

Die Anleitung der Application Access Policy beschreibt den Vorgang.
Ich erstelle mir eine neue Application Access Policy und verknüpfe die Policy mit der Application ID der App Registration.

PowerShell
Import-Module MicrosoftTeams
Connect-MicrosoftTeams
$AppAccessPolicy = New-CsApplicationAccessPolicy -Identity "Webinar API Test" -AppIds "458636c5-d0b2-4efb-b9ac-371c18ad48ad"


Ich weise die Policy einer Entra ID Gruppe zu. Optional kannst du die Policy Benutzerkonten (User Assignment) oder allen Mitarbeitenden (Global Assignment) zuweisen, siehe Grant-CsApplicationAccessPolicy.

PowerShell
Grant-CsApplicationAccessPolicy -PolicyName $AppAccessPolicy.Identity -Group "8667cfc4-6c88-4c11-8b98-e716d840de68"


Die Aktivierung der Policy kann 30 Minuten dauern.


3) Webinare über Microsoft Graph auswerten

Nach der Vorbereitung sollten Webinare für berechtigte Konten über Graph verfügbar sein.

PowerShell
Import-Module Microsoft.Graph.Authentication
Connect-MgGraph -ClientId "<AppID>" -CertificateThumbprint "<CertificateThumbprint>" -TenantId "<TenantID"

$Url = "https://graph.microsoft.com/beta/solutions/virtualEvents/webinars"
$AllWebinars = Invoke-MgGraphRequest -Method GET -Uri $Url -ContentType "application/json"  
$AllWebinars.value


Ich finde 16 Webinare. Es inkludiert verschiedene Testwebinare aus der Vergangenheit.

PowerShell

Pro Webinar inkludiert Graph Angaben über Name, Status, Audience, Datum, und andere Properties. Die verfügbaren Properties sind in der Dokumentation beschrieben.

PowerShell

4) Webinar über ID auswerten

In der Dokumentation beschreibt Microsoft ein Webinar über die Webinar ID auszuwerten. Die ID für ein Webinar zeigt Teams, wenn das Webinar in Teams im Web geöffnet und Manage Event ausgewählt wird.

Webinar in Teams im Web verwalten
Webinar in Teams im Web verwalten

In der Adressleiste zeigt es die ID 66412804-29c7-4570-b1de-5041a6ce30e0@ba304f99-a1c4-4b4c-827e-0d9f6063c05d. Mit der ID ist die Abfrage für ein einzelnes Webinar möglich.

PowerShell
Import-Module Microsoft.Graph.Authentication
Connect-MgGraph -ClientId "<AppID>" -CertificateThumbprint "<CertificateThumbprint>" -TenantId "<TenantID"

$Url = "https://graph.microsoft.com/beta/solutions/virtualEvents/webinars/66412804-29c7-4570-b1de-5041a6ce30e0@ba304f99-a1c4-4b4c-827e-0d9f6063c05d"
$Webinar = Invoke-MgGraphRequest -Method GET -Uri $Url -ContentType "application/json"  
$Webinar

PowerShell


5) Application Access Policy von Benutzerkonto entfernen

Später kann in Teams die Zuweisung der Application Access Policy wieder entfernt werden. In meinem Beispiel entferne ich die Zuweisung an die Gruppe.

PowerShell
Grant-CsApplicationAccessPolicy -Group "8667cfc4-6c88-4c11-8b98-e716d840de68" -PolicyName $null


Nach der Anpassung inkludiert die Abfrage aus Abschnitt 3 keine Webinare mehr.

PowerShell
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