我想设置 Azure AD 仅应用程序来访问 SharePointOnline 中的某个网站。但是,当您设置 Azure AD App-Only 应用程序时,您似乎只能授予它跨所有站点网站集的访问权限,并且不能在范围上进行选择。有没有更好的方法可以在不授予广泛访问权限的情况下做到这一点?
我是否应该使用 SharePoint 应用程序应用程序而不是使用 xml 权限定义?我知道使用这种方法您可以将其限制为仅一个网站集。
注意:您可以使用
应用程序权限限制对应用程序上下文中的 SharePoint 网站集的访问,但不能限制对特定文件夹/文件或特定范围的访问。Sites.Selected
创建 Azure AD 应用程序并授予 API 权限:
要仅授予对一个 SharePoint 网站的访问权限,我使用了以下 PowerShell 脚本:
$siteUrl = “https://xxx.sharepoint.com/sites/testruk”
$clientId = “ClientID”
$certThumbprint = “Thumbprint”
$tenant = “xxx.onmicrosoft.com”
Connect-PnPOnline -Url $siteUrl -Interactive
$writeperm = Grant-PnPAzureADAppSitePermission -Permissions “Write” -Site $siteUrl -AppId $clientId -DisplayName “PowerShell-SharepointOnline”
$PermissionId = Get-PnPAzureADAppSitePermission -AppIdentity $clientId
Set-PnPAzureADAppSitePermission -Site $siteurl -PermissionId $(($PermissionId).Id) -Permissions “FullControl”
当 SharePoint 网站使用应用程序时,我能够访问该网站:
Connect-PnPOnline -Url $siteUrl -ClientId $clientId -Thumbprint $certThumbprint -Tenant $tenant
当我尝试访问另一个 SharePoint 网站时,收到 403 forbidden 错误:
Connect-PnPOnline -Url $siteUrl -ClientId $clientId -Thumbprint $certThumbprint -Tenant $tenant
要确认上述内容,请检查以下 参考:
如何允许我的应用程序在没有用户的情况下仅访问特定驱动器或文件夹 - Microsoft 问答,作者:Vasil Michev
Graph API - 使用“Files.ReadWrite.All”和“Sites.ReadWrite.all”权限时限制 OneDrive/Sharepoint 访问 - Microsoft 问答,作者:CarlZhao-MSFT