不使用SharePointOnlineCredentials的项目在线CSOM

时间:2019-01-17 16:34:17

标签: sharepoint office365 sharepoint-online csom project-online

我们有一个每晚运行的控制台应用程序,它将使用CSOM更新一些项目计划。这将使用SharePointOnlineCredentials进行身份验证。

但是IT部门希望将租户的LegacyAuthProtocolsEnabled标志更改为false。因此,您阅读here时将无法再使用SharePointOnlineCredentials。

上面链接中建议的方法是使用ClientId和ClientSecret。我已经使用PnP Core AutheticationManager函数GetAppOnlyAuthenticatedContext对此进行了测试。这适用于SharePoint Online的ClientContext对象,但是在修改此函数以返回ProjectContext对象后将无法使用。因为SharePoint主体没有Project Online许可证,所以引发了ProjectServerError“ GeneralNotLicensed”。

我的第三次尝试是使用找到的here的Office365ClaimsHelper类。这会通过提供用户名和密码来与here联系以获取SAML令牌。现在,此方法适用于演示环境,但不适用于生产环境。我怀疑是因为它具有多重身份验证。

简而言之:有谁知道如何在不使用SharePointOnlineCredentials的情况下获取ProjectContext对象,又不显示在Multi-Factor身份验证环境中登录用户的弹出窗口?

1 个答案:

答案 0 :(得分:-1)

借助以下PowerShell脚本,设法找到了可行的解决方案:https://blogs.technet.microsoft.com/sharepointdevelopersupport/2018/02/07/sharepoint-online-active-authentication/

将其翻译为C#代码并调用Project Online CSOM工作!