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 注册应用程序的权限是:
- 微软图表:Directory.ReadWrite.All
- 微软图表:Group.Create
- 微软图表:Group.ReadWrite.All
- 微软图表:Sites.FullControl.All
- 微软图表:Sites.Manage.All
- 微软图表:Sites.Read.All
- 微软图表:Sites.ReadWrite.All
- 分享点:Sites.FullControl.All
- 分享点:Sites.Manage.All
- 分享点:Sites.Read.All
- 分享点:TermStore.Read.All
- 分享点:TermStore.ReadWrite.All
- 分享点:User.Read.All
- 分享点:User.ReadWrite.All
我也尝试根据这篇文章创建一个 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
我想使用 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 注册应用程序的权限是:
- 微软图表:Directory.ReadWrite.All
- 微软图表:Group.Create
- 微软图表:Group.ReadWrite.All
- 微软图表:Sites.FullControl.All
- 微软图表:Sites.Manage.All
- 微软图表:Sites.Read.All
- 微软图表:Sites.ReadWrite.All
- 分享点:Sites.FullControl.All
- 分享点:Sites.Manage.All
- 分享点:Sites.Read.All
- 分享点:TermStore.Read.All
- 分享点:TermStore.ReadWrite.All
- 分享点:User.Read.All
- 分享点:User.ReadWrite.All
我也尝试根据这篇文章创建一个 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