【发布时间】:2021-06-28 08:39:05
【问题描述】:
我正在尝试在 Azure 数据工厂和 SharePoint Online 之间移动文件。
我在 SharePoint 位置有一些测试数据文件,并且在数据工厂中有一个管道,其中包含一个 Web 活动和一个复制数据活动。然后,复制活动链接到作为其接收器的数据湖。
我的期望结果是授予复制数据活动对 SharePoint Online API 的访问权限,然后继续将检索到的数据移动到数据湖中。目前它具有不记名令牌,但无法通过 SharePoint Online API 访问数据。
我已遵循 Microsoft 指南 here,包括先决条件。
我在数据工厂中收到以下错误:
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 链接服务)中,不是网络活动。因此,我成功获得了传递给复制数据活动的不记名令牌,但被拒绝了。
疑难解答:
-
我已为数据分配了所有者角色访问数据工厂的权限 湖。
-
我已经按照先决条件注册了服务主体 App 在上面的微软指南中,成功使用应用程序 ID, 用于访问承载令牌的密钥和租户 ID
-
我已授予 SharePoint online完全 访问已注册的 服务应用程序,成功,因为我可以看到它在 SharePoint 的受信任应用程序中列出。我没有 只在这里:
https://my_company.sharepoint.com/_layouts/15/appinv.aspx但在这里https://my_company.sharepoint.com/sites/folder/_layouts/15/appinv.aspx -
我已授予 SharePoint 和 Microsoft Graph 的完整 API 权限 在注册的服务应用程序中。
-
我已经在 Postman 中复制了这个过程。只为拥有相同的 结果 - 我检索了一个不记名令牌,然后在 尝试使用不记名令牌调用文件的 GET 请求。 Postman 中的错误是:
{"error_description":"Exception of type 'Microsoft.IdentityModel.Tokens.AudienceUriValidationFailedException' was thrown."}
我已经读到,在此处使用基本身份验证无法在数据工厂中使用替代 OData 链接服务。因此,我尝试使用带有证书的 AAD 服务主体 this article,但在尝试生成证书时遇到了进一步的问题。也许这是我最好的选择。
我用过的最相关的帖子:
How to move sharepoint list or excel file to 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 azure-data-factory sharepoint-online sharepoint-rest-api