Heute können SharePoint Administratoren und berechtigte Konten über folgende Commands im Tenant eine PnP PowerShell Multi-Tenant App registrieren.
- Register-PnPManagementShellAccess
- Connect-PnPOnline <Tenantname>.sharepoint.com -Credentials (Get-Credential) > für Konten ohne MFA
- Connect-PnPOnline <Tenantname>.sharepoint.com -Interactive > für Konten mit MFA
Beim ersten Aufruf möchte PnP die Multi-Tenant App “PnP Management Shell” im Tenant registrieren. Ein Administrator kann den Berechtigungen zustimmen und die Registrierung durchführen.
In Entra wird die App als Enterprise App registriert.
Wie die PnP Community informiert (hier und hier) wird diese Multi-Tenant App am 9. September 2024 entfernt.
Von der Änderung betroffen ist auch CLI for Microsoft 365, das ebenfalls die PnP PowerShell Multi-Tenant App nutzt.
Die PnP Hilfe informiert über die Änderung.
Statt der Multi-Tenant App sollen Organisationen eine eigene Azure App nutzen. Mit der eigenen App können Organisationen Berechtigungen der App selbst definieren. Die Multi-Tenant App hatte bisher vordefinierte Rechte. Neu ist der Vorgang nicht.
Eine Azure App einzurichten ist kein grosser Aufwand. Microsoft und die PnP Community (für CLI for Microsoft) beschreiben in der Dokumentation Schritte zur Registrierung einer App und wie Administratoren API Berechtigungen vergeben. Optional registriert das Command Register-PnPEntraIDApp eine vorkonfigurierte Azure App.
- Für die Verbindung mit Code empfehle ich in einer Azure App die Nutzung von einem Zertifikat, statt dem Secret Key.
# PnP connection with Azure app and certificate
Import-Module PnP.PowerShell
Connect-PnPOnline <SharePointUrl> -ClientId <AppID> -Thumbprint <CertThumbprint> -Tenant <TenantID>
- Mit der App kannst du über den Parameter Interactive auch wieder eine interaktive Anmeldung mit Benutzerkonto durchführen. Die interaktive Anmeldung funktioniert für Delegated Permissions.
Eine Interactive-Anmeldung benötigst du für Benutzerkonten mit MFA.
# PnP connection with Azure app and interactive logon (for users with MFA)
Import-Module PnP.PowerShell
Connect-PnPOnline -Url <SharePointUrl> -ClientId <AppID> -Interactive
Beachte, für den Parameter Interactive erwartet PnP PowerShell die Redirect URI http://localhost in der App Registration. Unter Authentication fügst du die Redirect URI hinzu.
Ohne Redirect URI gibt PnP bei der Verbindung einen Fehler aus.
Bonus – Azure App in PowerShell als Umgebungsvariable speichern
Mit einer Umgebungsvariable kannst du für PowerShell Werte wie die Azure App ID speichern. Dadurch wird das Command Connect-PnPOnline für eine interaktive Anmeldung wie in der Vergangenheit genutzt.
# Save the Azure App ID as environment variable
# Set the environment variable for the current PowerShell session
$env:ENTRAID_APP_ID = "e17dc044-f8d5-4542-bb4b-3ceb352d3ab1"
# Or set the environment variable for the current user
[System.Environment]::SetEnvironmentVariable("ENTRAID_APP_ID", "e17dc044-f8d5-4542-bb4b-3ceb352d3ab1", [System.EnvironmentVariableTarget]::User)
Connect-PnPOnline -Url <SharePointURL> -Interactive
Die interaktive Verbindung zur App war erfolgreich und SharePoint gibt Daten zurück.
Eine Kontrolle zeigt mit der Umgebungsvariable wurde die Verbindung über meine Azure App e17dc044-f8d5-4542-bb4b-3ceb352d3ab1 hergestellt. Ohne der Umgebungsvariable hätte PnP die Multi-Tenant App registrieren wollen.