Получите данные SharePoint Office 365, используя идентификатор клиента

Я получаю доступ к данным онлайн-списка SharePoint, используя следующий код, но получаю следующую ошибку.

The remote server returned an error: (403) Forbidden.

Приложение веб-форм выполняется в Azure и использует проверку подлинности Azure. Я хотел бы использовать те же учетные данные для аутентификации

    string siteUrl = "[url]";
    string aadAppId = "[appid]";
    string clientSecret = "[redacted]";
    OfficeDevPnP.Core.AuthenticationManager authManager = new OfficeDevPnP.Core.AuthenticationManager();
    ClientContext context = authManager.GetAzureADNativeApplicationAuthenticatedContext(siteUrl, aadAppId, appurl, null, AzureEnvironment.Production);
        if (context != null)
            {
             Web web = context.Web;
             context.Load(web);
             context.ExecuteQuery();
            }

Я не хочу получать доступ к SharePoint с использованием учетных данных пользователя.

Я включил аутентификацию AAD Azure в веб-приложении. Веб-приложение проходит проверку подлинности с использованием учетных данных Azure.

На настройке CORS я также установил URL домена в "https://domainname.sharepoint.com";

В разделе управления разрешениями приложения AAD я дал приложению разрешение на чтение и запись списка sharepoint и веб-данных.

1 ответ

Ваш пример пытается получить токен как собственное клиентское приложение, которое не может хранить секрет и не может аутентифицироваться само по себе. (Вот почему вы заметите, что вы никогда не используете clientSecret.)

Если вы хотите использовать OfficePnP, вы можете попробовать один из AuthenticationManager.GetAzureADAppOnlyAuthenticatedContext методы аутентификации в контексте приложения. Обратите внимание, что все они требуют сертификат для проверки подлинности, а не секрет.

Другие вопросы по тегам