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

Project Online项目权限模式下应用仅身份验证绕MFA遇错求助

具体解决方案步骤

一、修正Azure AD应用权限配置

  1. 在Azure AD(Entra ID)注册应用后,切换到应用权限标签,添加以下权限(需管理员同意):
    • SharePoint -> Sites.FullControl.All(或Sites.Selected实现最小权限)
    • 注:Project相关的应用权限在Azure AD界面不直接显示,无需额外添加,依赖SharePoint权限结合PWA站点授权即可。

二、在PWA站点授予应用专属权限

  1. 访问你的PWA站点权限配置页:https://<tenant>.sharepoint.com/sites/<pwa-site>/_layouts/15/appinv.aspx
  2. 输入Azure AD应用的Client ID,点击"Lookup"加载应用信息
  3. 输入以下权限请求XML(针对PWA站点的Project资源):
<AppPermissionRequest Scope="http://sharepoint/content/sitecollection/web/project" Right="FullControl" />
  1. 点击"Create"后,由PWA站点管理员完成权限批准。

三、修正CSOM代码的关键问题

你之前的代码存在两个核心问题:

  • Scope指向错误:必须使用PWA站点的专属scope,而非根SharePoint站点
  • ProjectContext初始化需指向PWA站点URL

修正后的代码示例:

public static void Login(this ProjectContext context)
{
    var clientId = "你的Azure AD应用Client ID";
    var tenantId = "你的租户ID";
    var pwaSiteUrl = "https://<tenant>.sharepoint.com/sites/<pwa-site>";
    var certificate = new X509Certificate2("c:\\temp\\cert.pfx", "证书密码");
    
    var authority = $"https://login.microsoftonline.com/{tenantId}";
    var scope = $"{pwaSiteUrl}/.default";

    var app = ConfidentialClientApplicationBuilder.Create(clientId)
        .WithCertificate(certificate)
        .WithAuthority(new Uri(authority))
        .Build();

    AuthenticationResult result = Task.Run(() => app.AcquireTokenForClient(new[] { scope }).ExecuteAsync()).Result;
    string accessToken = result.AccessToken;

    context.ExecutingWebRequest += (sender, e) =>
    {
        e.WebRequestExecutor.RequestHeaders["Authorization"] = $"Bearer {accessToken}";
    };
}

// 初始化ProjectContext时必须指向PWA站点
var pwaContext = new ProjectContext(new Uri("https://<tenant>.sharepoint.com/sites/<pwa-site>"));
pwaContext.Login();
pwaContext.Load(pwaContext.Projects);
pwaContext.ExecuteQuery();

四、解决"用户未找到"错误

这个错误是因为Project Online的项目权限模式未识别Azure AD应用的身份,需确保:

  1. PWA站点的应用权限已成功批准(步骤二完成)
  2. 若使用最小权限,需在PWA的项目权限设置中,将应用权限映射到具体的项目组(如"Project Managers"),确保应用拥有对应项目的访问权限。

五、条件访问策略调整

若租户有强制MFA的条件访问策略,需为该Azure AD应用添加例外:

  1. 在Entra ID的条件访问策略中,排除该应用,或设置"应用类型"为"服务主体"时绕过MFA验证。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 12:45:58