我们每天晚上都有一个控制台应用程序运行,它使用 CSOM 更新一些项目计划。这使用 SharePointOnlineCredentials 进行身份验证。
但是 IT 部门想要将租户的 LegacyAuthProtocolsEnabled 标志更改为 false。这会导致无法再使用 SharePointOnlineCredentials,您可以在此处阅读。
上面链接中的建议方法是使用 ClientId 和 ClientSecret。我已经使用PnP Core AutheticationManager 函数 GetAppOnlyAuthenticatedContext 对此进行了测试。这适用于 SharePoint Online 的 ClientContext 对象,但在修改此函数以返回 ProjectContext 对象后不起作用。由于 SharePoint 主体没有 Project Online 许可证(请参阅此处),因此引发 ProjectServerError "GeneralNotLicensed"。
我的第三次尝试是使用此处找到的 Office365ClaimsHelper 类。这通过提供用户名和密码联系https://login.microsoftonline.com/extSTS.srf以获取 SAML 令牌。现在这种方法适用于演示环境,但不适用于生产环境。我怀疑是因为这具有多因素身份验证。
简而言之:是否有人知道如何在不使用 SharePointOnlineCredentials 且不显示弹出窗口以在多因素身份验证环境中登录用户的情况下获取 ProjectContext 对象?