Ошибка 401 фабрики данных Azure при вызове запроса GET в SharePoint Online API

Я пытаюсь переместить файлы между фабрикой данных Azure и SharePoint Online.

У меня есть несколько файлов тестовых данных в расположении SharePoint, и у меня есть конвейер в фабрике данных, содержащий действие в Интернете и действие копирования данных. Затем действие копирования связывается с озером данных как его приемником.

Мой желаемый результат - предоставить действию копирования данных доступ к SharePoint Online API, а затем перейти к перемещению извлеченных данных в озеро данных. В настоящее время у него есть токен-носитель, но он не может получить доступ к данным через SharePoint Online API.

Я следил за руководством Microsoft здесь, включая предпосылки.

В фабрике данных появляется следующая ошибка: Error code 2200 "Failure happened on 'Sink' side. ErrorCode=UserErrorInvalidCredentialToReadHttpFile,'Type=Microsoft.DataTransfer.Common.Shared.HybridDeliveryException,Message=The credential to read http file is invalid.,Source=Microsoft.DataTransfer.ClientLibrary,''Type=System.Net.WebException,Message=The remote server returned an error: (401) Unauthorized.,Source=System,

Ошибка присутствует в действии копирования данных (которое использует связанный сервис HTTP), а не в веб-активности. Поэтому я успешно получаю токен на предъявителя, который передается в действие Копировать данные, но мне отказывают.

Исправление проблем:

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

  • Я зарегистрировал приложение-субъект-службу в соответствии с предварительными условиями в приведенном выше руководстве Microsoft, успешно используя идентификатор приложения, ключ и идентификатор клиента для доступа к токену носителя.

  • Я успешно предоставил SharePoint online полный доступ к зарегистрированному сервисному приложению, поскольку я вижу его в списке доверенных приложений в SharePoint. Я сделал так не только здесь: https://my_company.sharepoint.com/_layouts/15/appinv.aspx, но и здесь https://my_company.sharepoint.com/sites/folder/_layouts/15/appinv.aspx

  • Я предоставил полные разрешения API для SharePoint и Microsoft Graph в зарегистрированном приложении-службе.

  • Я воспроизвел процесс в Postman. Только для того, чтобы получить те же результаты - я получаю токен-носитель, а затем получаю ошибку 401 при попытке вызвать GET-запрос для файлов с использованием токена-носителя. Ошибка в Postman: {"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}

Я читал, что альтернативная связанная служба OData в фабрике данных невозможна с использованием базовой аутентификации здесь. Итак, я попробовал в этой статье с использованием субъекта-службы AAD с сертификатом, но возникли дополнительные проблемы при попытке создать сертификат. Возможно, это мой лучший выбор.

Самые актуальные сообщения, которые я использовал:

Как переместить список точек доступа или файл Excel перейти на azure sql dw?

https://docs.microsoft.com/en-us/answers/questions/109275/copy-file-from-sharepoint-not-working.html

http://www.ktskumar.com/2017/01/access-sharepoint-online-using-postman/

Фабрика данных Azure и SharePoint


person Aless    schedule 01.04.2021    source источник


Ответы (1)


Итак, я нашел решение своего вопроса. Использование приложения Azure Logic для перемещения файлов из SharePoint Online в хранилище Azure.

Это было бесконечно проще, чем использование фабрики данных, и я бы хотел, чтобы кто-нибудь сказал мне об этом некоторое время назад.

Найдена ссылка здесь

person Aless    schedule 06.04.2021