You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过Azure Function托管身份访问SharePoint Online进行读写操作?

使用Azure Function托管身份访问SharePoint Online

可以直接使用Azure Function的托管身份来访问SharePoint Online,无需单独创建应用注册,具体操作步骤如下:

1. 为托管身份分配SharePoint权限

方式一:Azure AD门户操作

  • 进入Azure Active Directory -> 企业应用程序 -> 找到与Azure Function同名的托管身份
  • 点击「权限」->「添加权限」-> 选择「SharePoint」-> 勾选「应用权限」
  • 根据需求选择对应权限(例如Sites.ReadWrite.All用于站点级读写,或更细粒度的权限),完成后点击「授予管理员同意」

方式二:PowerShell自动化分配

使用PowerShell批量配置权限:

# 连接Microsoft Graph
Connect-MgGraph -Scopes "AppRoleAssignment.ReadWrite.All"
# 获取SharePoint服务主体与托管身份主体
$spPrincipal = Get-MgServicePrincipal -Filter "displayName eq 'SharePoint'"
$managedIdentity = Get-MgServicePrincipal -Filter "displayName eq '你的Azure Function名称'"

# 获取目标权限ID并完成分配
$permissionId = ($spPrincipal.AppRoles | Where-Object {$_.Value -eq "Sites.ReadWrite.All"}).Id
New-MgServicePrincipalAppRoleAssignment -ServicePrincipalId $managedIdentity.Id -PrincipalId $managedIdentity.Id -ResourceId $spPrincipal.Id -AppRoleId $permissionId

2. 在Azure Function中实现访问逻辑

以C#为例,通过Azure.Identity和Microsoft.Graph库利用托管身份访问SharePoint:

using Azure.Identity;
using Microsoft.Graph;

var credential = new DefaultAzureCredential();
var graphClient = new GraphServiceClient(credential);

// 示例:获取指定站点信息
var site = await graphClient.Sites["{你的站点ID}"].GetAsync();
// 示例:获取站点下的所有列表
var lists = await graphClient.Sites["{你的站点ID}"].Lists.GetAsync();

注:DefaultAzureCredential会自动调用Azure Function的托管身份获取访问令牌,无需手动配置ClientID、密钥等信息

注意事项

  • 最小权限原则:优先分配细粒度权限,若仅需访问特定站点,可直接在SharePoint站点权限设置中添加托管身份为站点成员/所有者
  • 权限生效:分配应用权限后必须完成管理员同意,否则Function会出现权限不足的错误

内容的提问来源于stack exchange,提问作者microsoftdeveloperdesigner

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.13 10:03:22