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

如何在ASP.NET Core中通过CSOM以用户身份认证调用SharePoint Online?

解决方案:ASP.NET Core 结合 Microsoft Identity 代表已登录用户调用 SharePoint Online CSOM

核心逻辑

通过ASP.NET Core中Microsoft Identity获取的用户AccessToken,直接传递给CSOM完成身份认证,实现同租户下以当前登录用户上下文操作SharePoint Online。

步骤1:配置项目依赖

确保安装以下NuGet包:

  • Microsoft.SharePointOnline.CSOM(选用最新稳定版)
  • Microsoft.Identity.Web(用于ASP.NET Core的Microsoft Identity集成)

步骤2:获取当前用户的AccessToken

在控制器或服务中,通过IHttpContextAccessor获取用户的AccessToken,需指定SharePoint Online的资源标识符(租户站点根地址):

using Microsoft.Identity.Web;

public class SPOOperationsService
{
    private readonly IHttpContextAccessor _httpContextAccessor;

    public SPOOperationsService(IHttpContextAccessor httpContextAccessor)
    {
        _httpContextAccessor = httpContextAccessor;
    }

    public async Task<string> GetSPOSiteTitle(string siteUrl)
    {
        // 获取用户针对SPO的AccessToken
        var accessToken = await _httpContextAccessor.HttpContext.GetAccessTokenForUserAsync("https://your-tenant.sharepoint.com");
        // 后续用该Token初始化CSOM上下文
        // ...
    }
}

步骤3:用AccessToken初始化CSOM上下文

有两种方式可以实现,根据CSOM版本选择:

方式1:使用CSOM内置的认证方法(推荐新版CSOM)

using Microsoft.SharePoint.Client;

var siteUrl = "https://your-tenant.sharepoint.com/sites/your-target-site";
using (var context = new AuthenticationManager().GetAzureADAccessTokenAuthenticatedContext(siteUrl, accessToken))
{
    // 执行CSOM操作示例:获取站点标题
    context.Load(context.Web, web => web.Title);
    await context.ExecuteQueryAsync();
    
    return context.Web.Title;
}

方式2:手动设置请求头(兼容旧版CSOM)

如果CSOM版本未提供内置方法,可手动添加Authorization请求头:

using Microsoft.SharePoint.Client;

var siteUrl = "https://your-tenant.sharepoint.com/sites/your-target-site";
using (var context = new ClientContext(siteUrl))
{
    context.ExecutingWebRequest += (sender, e) =>
    {
        e.WebRequestExecutor.RequestHeaders["Authorization"] = $"Bearer {accessToken}";
    };
    
    // 执行CSOM操作
    context.Load(context.Web, web => web.Title);
    await context.ExecuteQueryAsync();
    
    return context.Web.Title;
}

步骤4:配置Azure AD应用权限

在Azure AD注册的应用中添加委派权限:

  • 选择SharePoint相关权限,比如Sites.Read.All、Sites.ReadWrite.All(根据业务需求选择)
  • 针对租户级权限,需完成管理员同意操作

注意事项

  • 确保当前登录用户在目标SharePoint站点拥有对应的访问权限
  • AccessToken有效期有限,Microsoft.Identity.Web会自动处理Token刷新逻辑
  • 仅适合同租户场景,应用与SharePoint Online需归属同一Azure AD租户

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.15 18:02:22