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

如何使用PNP框架在启用Azure安全默认的环境中认证SharePoint Online客户端凭据

解决方案:使用PNP框架适配Azure安全默认值环境

Azure安全默认值启用后,会禁用传统的用户名密码认证方式,你的旧代码依赖的SharePointOnlineCredentials属于这类被阻止的认证方式,因此需要改用PNP框架支持的现代认证流程。以下是几种可行的实现方案:

方案1:使用客户端密码(Client Secret)认证(适合后台服务)

这种方式适合无交互的后台程序,需先在Azure AD中注册应用,授予SharePoint相关权限(如Sites.FullControl.All),并生成客户端密码。

代码示例

using PnP.Core.Services;
using PnP.Core.Auth;

// 配置认证参数
var authManager = new AuthenticationManager(
    tenantId: "你的租户ID",
    clientId: "Azure AD应用的客户端ID",
    clientSecret: "生成的客户端密码");

// 创建PnP上下文
using (var context = await authManager.GetContextAsync("https://abc.sharepoint.com/sites/app"))
{
    // 加载网站信息
    await context.Web.LoadAsync(p => p.Url);
    Console.WriteLine($"网站URL: {context.Web.Url}");
}

方案2:使用客户端证书认证(更安全的服务端认证)

如果需要更高安全性,可用客户端证书代替密码,同样需在Azure AD注册应用并上传证书。

代码示例

using PnP.Core.Services;
using PnP.Core.Auth;
using System.Security.Cryptography.X509Certificates;

// 加载证书(可从本地文件或证书存储加载)
var certificate = new X509Certificate2(@"C:\path\to\your\certificate.pfx", "证书密码");

// 配置认证管理器
var authManager = new AuthenticationManager(
    tenantId: "你的租户ID",
    clientId: "Azure AD应用的客户端ID",
    certificate: certificate);

// 创建上下文并操作
using (var context = await authManager.GetContextAsync("https://abc.sharepoint.com/sites/app"))
{
    await context.Web.LoadAsync(p => p.Url);
    Console.WriteLine($"网站URL: {context.Web.Url}");
}

方案3:交互式登录(适合桌面/用户交互应用)

如果是带用户交互的应用,可通过弹窗让用户登录,无需预先存储密码或证书。

代码示例

using PnP.Core.Services;
using PnP.Core.Auth;

// 配置交互式认证
var authManager = new AuthenticationManager(
    clientId: "Azure AD应用的客户端ID",
    redirectUri: new Uri("https://localhost")); // 需与Azure AD应用配置的重定向URI一致

// 创建上下文,会弹出登录窗口
using (var context = await authManager.GetInteractiveContextAsync("https://abc.sharepoint.com/sites/app"))
{
    await context.Web.LoadAsync(p => p.Url);
    Console.WriteLine($"网站URL: {context.Web.Url}");
}

前置注意事项

  • 所有方案都需先在Azure AD中注册应用,并根据场景授予对应的SharePoint API权限(区分应用权限或委托权限,匹配认证方式)。
  • 确保项目已安装PnP.Core和PnP.Core.Auth NuGet包,可通过NuGet包管理器安装。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 07:40:33