Каждую ночь у нас запускается консольное приложение, которое обновляет некоторые планы проектов с помощью CSOM. Это использует SharePointOnlineCredentials для аутентификации.
Но ИТ-отделы хотят изменить флаг LegacyAuthProtocolsEnabled клиента на false. Как следствие этого, SharePointOnlineCredentials больше нельзя использовать, поскольку вы можете прочитать здесь.
Предлагаемый подход в приведенной выше ссылке заключался в использовании ClientId и ClientSecret. Я протестировал это с помощью PnP Core функции AutheticationManager GetAppOnlyAuthenticatedContext. Это работает для объекта ClientContext для SharePoint Online, но не работает после изменения этой функции для возврата объекта ProjectContext. Возникает ошибка ProjectServerError «GeneralNotLicensed», поскольку у субъекта SharePoint нет лицензии на Project Online (см. здесь).
Моя третья попытка заключалась в использовании класса Office365ClaimsHelper, найденного