PnP Powershell Sharepoint with app permissions: The remote server returned an error: (403) Forbidden

PnP Powershell Sharepoint with app permissions: The remote server returned an error: (403) Forbidden

我想使用 PnP Powershell 通过在租户中制作现有网站的副本来配置现代 Sharepoint Online 网站。我正在 运行 安装 SharePointPnPPowerShellOnline 模块,版本 3.22.2006.2。

如果我像这样使用 -UseWebLogin 选项连接:

Connect-PnPOnline -Url https://<tenant>.sharepoint.com/sites/<sitename> -UseWebLogin

…然后 运行

Get-PnPProvisioningTemplate -Out file.xml

…然后一切正常,然后我可以继续从它创建的 XML 文件配置一个新站点。

但是,我喜欢做的是在 Azure AD 中对已注册的应用程序使用应用程序权限。我已经注册了一个应用程序,并为它提供了我能想到的所有与 Sharepoint 相关的权限(以期在我开始工作后将权限减少到最低限度)。我这样连接:

connect-PnPOnline -ClientID "<ClientID>" -ClientSecret "<ClientSecret>" -url https://<tenant>.sharepoint.com/sites/<sitename>

... 似乎可以毫无问题地建立连接。但是,当我尝试 运行 以下内容时:

Get-PnPProvisioningTemplate -Out file.xml

…失败并显示错误:

Get-PnPProvisioningTemplate : The remote server returned an error: (403) Forbidden.
At line:1 char:1
+ Get-PnPProvisioningTemplate
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : WriteError: (:) [Get-PnPProvisioningTemplate], WebException
    + FullyQualifiedErrorId : EXCEPTION,SharePointPnP.PowerShell.Commands.Provisioning.Site.GetProvisioningTemplate

我授予我的 Azure AD 注册应用程序的权限是:

我也尝试根据这篇文章创建一个 Sharepoint App Principal:https://www.sharepointdiary.com/2019/03/connect-pnponline-with-appid-and-appsecret.html。如果我在我的 connect-PnpOnline 行中使用来自此的客户端 ID 和客户端密码,我可以再次毫无问题地连接。但是在尝试 运行 Get-PnPProvisioningTemplate.

时我又遇到了同样的错误

我也试过连接到同一租户内的不同站点,但我在所有这些站点上都遇到了同样的错误。

我开始 运行 对此一无所知 - 任何人都可以解释一下吗?

成功了。

当我创建我的 Sharepoint App Principal 时,我授予它权限 XML:

<AppPermissionRequests AllowAppOnlyPolicy="true">
       <AppPermissionRequest Scope="http://sharepoint/content/sitecollection" Right="FullControl" />
</AppPermissionRequests>

但我需要的是:

<AppPermissionRequests AllowAppOnlyPolicy="true">
       <AppPermissionRequest Scope="http://sharepoint/content/tenant" Right="FullControl" />
</AppPermissionRequests>

...在其他作品中,针对整个租户的 FullControl,而不仅仅是 SiteCollection。

您还可以在 Azure AD 上注册应用程序。如果在这种情况下,您需要配置证书并向 SharePoint API 而不是 MS Graph 授予权限。

教程如下:

BR