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