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

如何使用C#认证SharePoint Online?解决‘身份未认证’错误

解决C#连接SharePoint Online时的身份验证错误

错误说明

连接SharePoint Online时出现提示:The identity has not been authenticated.(身份未通过验证)

排查与修复方案

针对你提供的代码,从以下几个方面逐一排查:

1. 确认账号权限与信息正确性

  • 确保登录账号loginname@yoursite.onmicrosoft.com是有效的SharePoint Online授权账号,且拥有目标站点的访问权限
  • 密码yourpassword需完全正确,注意大小写、特殊字符;如果账号开启了多重身份验证(MFA),SharePointOnlineCredentials方式无法直接验证,需改用其他认证方案

2. 优化SecureString构建逻辑

原代码的SecureString构建可以补充只读标记,避免后续意外修改,修正后代码:

var passWord = new SecureString();
foreach (char c in "yourpassword")
{
    passWord.AppendChar(c);
}
passWord.MakeReadOnly(); // 标记为只读,提升安全性与稳定性

3. 校验站点URL准确性

确保站点URLhttps://yoursite.sharepoint.com/完全正确:如果是子站点,需写成https://yoursite.sharepoint.com/sites/xxx格式;URL结尾的斜杠不影响,但需保证站点真实存在且账号有权访问

4. 处理多重身份验证(MFA)场景

若账号开启了MFA,SharePointOnlineCredentials不再适用,可改用PnP Core SDK实现认证,示例代码:

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

var authManager = new OAuthAuthenticationProvider(
    "你的客户端ID",
    "你的租户ID",
    "客户端密钥"); // 也可使用交互式弹窗认证

using (var context = await PnPContextFactory.CreateAsync("https://yoursite.sharepoint.com/", authManager))
{
    var web = await context.Web.GetAsync();
    Console.WriteLine(web.Title);
    Console.ReadLine();
}

注:使用该方案需先安装NuGet包PnP.Core和PnP.Core.Auth

5. 检查CSOM包版本

确保引用的Microsoft.SharePointOnline.CSOM是最新稳定版本,旧版本可能存在认证兼容性问题

非MFA场景下的完整修正代码

using Microsoft.SharePoint.Client;
using System;
using System.Security;

class Program
{
    static void Main()
    {
        string siteUrl = "https://yoursite.sharepoint.com/";
        string username = "loginname@yoursite.onmicrosoft.com";
        string password = "yourpassword";

        var securePassword = new SecureString();
        foreach (char c in password)
        {
            securePassword.AppendChar(c);
        }
        securePassword.MakeReadOnly();

        using (ClientContext clientContext = new ClientContext(siteUrl))
        {
            clientContext.Credentials = new SharePointOnlineCredentials(username, securePassword);
            
            Web web = clientContext.Web;
            clientContext.Load(web);
            
            try
            {
                clientContext.ExecuteQuery();
                Console.WriteLine(web.Title);
            }
            catch (Exception ex)
            {
                Console.WriteLine($"认证失败:{ex.Message}");
            }
            
            Console.ReadLine();
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 11:15:31